入门篇(3)——数学问题(5.5质因子分解)
1096 Consecutive Factors
我的代码
#include<stdio.h>
#include<math.h>
int main(){
int n,max=0,pos=0;
scanf("%d",&n);
for(int i=2;i<sqrt(n);i++){
int temp=n,len=0,j=i;
while(temp%j==0){
len++;
temp/=j;
j++;
}
if(max<len){
max=len;
pos=i;
}
}
if(max!=0){
printf("%d\n",max);
for(int i=0;i<max;i++){
printf("%d",pos+i);
if(i<max-1) printf("*");
}
}
else{
printf("1\n%d",n);
}
}
notes
- 要注意素数的特殊情况
- 但是不能先进行预处理把素数表弄出来,这样会超出内存
- 也不能直接for循环到n,这样会超时
- 所以应该for循环到sqrt(n),然后单独处理最大长度max仍然为0(即n为素数,从2到sqrt(n)都没有因子)的情况
1024 Palindromic Number
我的代码(13/25)
#include<stdio.h>
int revs(int a){
int b=0;
while(a!=0){
b=b*10+a%10;
a/=10;
}
return b;
}
int main(){
int n,k,step=0;
scanf("%d%d",&n,&k);
for(int i=0;i<k;i++){
if(n==revs(n)){
break;
}
n=n+revs(n);
step++;
}
printf("%d\n%d\n",n,step);
}
notes
- n进行100次加法之后远超过longlong能表示的范围,故要用大整数的方法计算,即代码模拟竖式加法运算
|