某种序列-大数计算

某种序列

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

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

难度:4

输入

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

输出

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

样例输入

1 1 1

样例输出

69087442470169316923566147

描述

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

 

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

#include <stdio.h>
#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<MAX;i++)	
			for(j=0;j<MAX;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<MAX;i++){
			digit=0;
			for(j=0;j<MAX;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<stdio.h>
#include<string.h>
#include <stdlib.h>
void add(char a[],char b[],char back[])
{
	int i,j,k,up,x,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]);
	}
}

相关文章

文章浏览阅读5.3k次,点赞10次,收藏39次。本章详细写了mysq...
文章浏览阅读1.8k次,点赞50次,收藏31次。本篇文章讲解Spar...
文章浏览阅读7.8k次,点赞9次,收藏34次。ES查询常用语法目录...
文章浏览阅读928次,点赞27次,收藏18次。
文章浏览阅读1.1k次,点赞24次,收藏24次。作用描述分布式协...
文章浏览阅读1.5k次,点赞26次,收藏29次。为贯彻执行集团数...