解题思路:
指数叠加的大整数运算。
注意事项:
题目上说的n<10100这一句应该是打错了,。我把程序查来查去查不出错。后来把输入的int改成字符串,设了200位,就通过了。
参考代码:
#include<stdio.h>
#include<string.h>
int xx(char *a,char *b,char *c)
{
int i,j,t=0,k;
for(i=0;b[i]!=NULL&&i<100;i++)
{
for(j=0;a[j]!=NULL&&j<100;j++)
{
if(i+j<100)
{
if(c[j+i]==NULL)
{
c[j+i]='0';
if(j+i+1<=100)
c[j+i+1]=NULL;
}
t=(c[j+i]-'0')+(a[j]-'0')*(b[i]-'0');
c[j+i]=t%10+'0';
t=t/10;
k=j+i+1;
while(t!=0&&k<100)
{
if(c[k]==NULL)
{
c[k]='0';
c[k+1]=NULL;
}
t=t+(c[k]-'0');
c[k]=t%10+'0';
t=t/10;
k++;
}
}
}
}
return 0;
}
int add(char *m,char *nm)
{
int i,t=0,k;
for(i=0;i<200;i++)
{
if(m[i]==NULL&&nm[i]==NULL)
break;
else if(m[i]==NULL)
{
m[i]='0';
m[i+1]=NULL;
}
else if(nm[i]==NULL)
{
nm[i]='0';
nm[i+1]=NULL;
}
t=(m[i]-'0')+(nm[i]-'0');
m[i]=t%10+'0';
t=t/10;
k=i;
while(t!=0)
{
k++;
if(m[k]==NULL)
{
m[k]='0';
m[k+1]=NULL;
}
t=m[k]-'0'+t;
m[k]=t%10+'0';
t=t/10;
}
}
}
int main()
{
// long int bug=0;
int a,b,i,j,p=0,end=0,w=0;
char n[102],t[102],c[102],tempm[102],tempnm[102],mast[102],m[200],nm[200];
char check[200];
scanf("%s",check); //找了好久终于找到了错的地方,,,原来输入问题。
scanf("%d",&b);
j=0;
for(i=(int)strlen(check)-1;i>=0&&j<=100;i--)
{
n[j]=check[i];
j++;
}
n[j]=NULL;
//这里是原本的整型输入
// scanf("%d %d",&a,&b);
m[0]='0';
m[1]=NULL;
nm[0]='1';
nm[1]=NULL;
/*
for(i=0;i<b;i++)
{
n[i]=a%10+'0';
a=a/10;
}
n[i]=NULL;
*/
strcpy(mast,n);
strcpy(t,n);
tempm[0]='1';
tempm[1]=NULL;
for(i=1;i<=b;i++)
{
tempnm[0]=NULL;
c[0]=NULL;
xx(n,t,c);
xx(tempm,t,tempnm);
tempnm[b+1]=NULL;
c[b]=NULL;
add(m,nm);
p=0;
for(j=w;j<b;j++)
{
if(c[j]!=mast[j])
{
i=w;
break;
}
else
{
p=1;
w++;
}
}
if(p==1)
{
strcpy(nm,m);
if(w==b)
{
for(i=(int)strlen(m)-1;i>=0;i--)
{
printf("%c",m[i]);
// bug=bug*10+(m[i]-'0');
}
// printf("%ld",bug);
return 0;
}
strcpy(t,tempnm);
}
strcpy(tempm,tempnm);
strcpy(n,c);
end++;
if(end==100000)
{
break;
}
}
printf("-1");
return 0;
}
0.0分
13 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复