1. 云栖社区>
  2. PHP教程>
  3. 正文

某种序列-大数计算

作者:用户 来源:互联网 时间:2017-12-01 15:54:43

计算序列大数

某种序列-大数计算 - 摘要: 本文讲的是某种序列-大数计算, 某种序列 http://acm.nyist.net/JudgeOnline/problem.php?pid=114 时间限制:3000ms | 内存限制:65535KB 难度:4 输入 输入包含多行数据 每行数据包含3个整数A0, A1,


某种序列

http://acm.nyist.net/JudgeOnline/problem.php?pid=114


时间限制:3000ms | 内存限制:65535KB


难度:4


输入


输入包含多行数据 每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 100000000) 数据以EOF结束


输出


对于输入的每一行输出A99的值


样例输入


1 1 1

样例输出


69087442470169316923566147

描述


数列A满足An = An-1 + An-2 + An-3, n >= 3 编写程序,给定A0, A1 和 A2, 计算A99

我的代码,使用二维数组,方便保存和计算


#include
#define MAX 100
int a[MAX][MAX];
int main(int argc, char *argv[])
{
int x,y,z,i,j;
while( scanf("%d %d %d",&x,&y,&z) != EOF){
//特殊情况一定要考虑 ::>_<::
if(!x && !y && !z){
printf("0/n");
continue;
}


for(i=0;i for(j=0;j a[i][j]=0;
j=0;
while(x){a[0][j++]=x%10; x /= 10;}
j=0;
while(y){a[1][j++]=y%10; y /= 10;}
j=0;
while(z){a[2][j++]=z%10; z /= 10;}

//求出a[99]
int digit=0,t;
for(i=3;i digit=0;
for(j=0;j t=a[i-1][j]+a[i-2][j]+a[i-3][j]+digit;
a[i][j] = t % 10;
digit = t / 10;

}
}

i=MAX-1;
while(!a[MAX-1][i]) i--;
for(;i>=0;i--)
printf("%d",a[MAX-1][i]);
printf("/n");
}
return 0;
}

题目推荐

#include
#include
#include
void add(char a[],char b[],char back[])
{
int i,j,k,up,x,y,z,l;
char *c;
if (strlen(a)>strlen(b)) l=strlen(a)+2; else l=strlen(b)+2;
c=(char *) malloc(l*sizeof(char));
i=strlen(a)-1;
j=strlen(b)-1;
k=0;up=0;
while(i>=0||j>=0)
{
if(i<0) x='0'; else x=a[i];
if(j<0) y='0'; else y=b[j];
z=x-'0'+y-'0';
if(up) z+=1;
if(z>9) {up=1;z%=10;} else up=0;
c[k++]=z+'0';
i--;j--;
}
if(up) c[k++]='1';
i=0;
c[k]='/0';
for(k-=1;k>=0;k--)
back[i++]=c[k];
back[i]='/0';
}
int main()
{
char a[3][1000],temp[1000];
int roll=3;
while(scanf("%s%s%s",a[0],a[1],a[2]) !=EOF)
{
for (int i=3;i<=99;i++)
{
add(a[(i-1)%3],a[(i-2)%3],temp);
add(temp,a[(i-3)%3],a[i%3]);
}
printf("%s/n",a[0]);
}
}

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索计算 , 序列 , 大数 ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备