加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

nyoj 某种序列 114 (大数&&滚动数组) 好题

发布时间:2020-12-14 02:13:39 所属栏目:大数据 来源:网络整理
导读:某种序列 时间限制: 3000 ms? |?????????? 内存限制: 65535 KB 难度: 4 描述 数列A满足An = An-1 + An-2 + An-3,n = 3 编写程序,给定A0,A1 和 A2,计算A99 输入 输入包含多行数据 每行数据包含3个整数A0,A1,A2 (0 = A0,A2 = 100000000) 数据以EOF结束 输

某种序列

时间限制: 3000 ms? |?????????? 内存限制: 65535 KB
难度: 4
描述
数列A满足An = An-1 + An-2 + An-3,n >= 3
编写程序,给定A0,A1 和 A2,计算A99
输入
输入包含多行数据
每行数据包含3个整数A0,A1,A2 (0 <= A0,A2 <= 100000000)
数据以EOF结束
输出
对于输入的每一行输出A99的值
样例输入
1 1 1
样例输出
69087442470169316923566147
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 110
int a[N];
int b[N];
int c[N];
int sum[N];
void init(int x,int a[])
{
	int i=0;
	while(x)
	{
		a[i++]=x%10;
		x/=10;
	}
}
int main()
{
	int aa,bb,cc;
	while(scanf("%d%d%d",&aa,&bb,&cc)!=EOF)
	{
		int i,j,t;
		memset(a,sizeof(a));
		memset(b,sizeof(b));
		memset(c,sizeof(c));
		init(aa,a);
		init(bb,b);
		init(cc,c);
		for(i=3;i<=99;i++)
		{
			memset(sum,sizeof(sum));
			for(j=0;j<N;j++)
			{
				sum[j]+=(a[j]+b[j]+c[j]);
				if(sum[j]>9)
				{
					t=sum[j];
					sum[j]=t%10;
					sum[j+1]=t/10;
				}
			}
			for(j=0;j<N;j++)//分别更新三个数的值(全都加 1,如 1,2,3变成2,3,4) 
			{
				a[j]=b[j];
				b[j]=c[j];
				c[j]=sum[j];
			}
		}
		for(j=N-1;j>0&&sum[j]==0;j--);//去掉前面的0。 
		for(;j>=0;j--)
			printf("%d",sum[j]);
		printf("n");
	}
	return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读