NYOJ 某种序列

某种序列

时间限制: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, A1, A2 <= 100000000)

数据以EOF结束

输出
对于输入的每一行输出A99的值
样例输入
1 1 1
样例输出
69087442470169316923566147
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int sum[110][110];
int main()
{
	int a,b,c,i,j,n,k,q,p;
	while(scanf("%d%d%d",&a,&b,&c)==3){
		memset(sum,0,sizeof(sum));i=j=0;
		if(a==0&&b==0&&c==0){
			printf("%d\n",0);continue;
		}
		while(a){
			sum[0][j++]=a%10;
			a=a/10;
		}j=0;
		while(b){
			sum[1][j++]=b%10;
			b=b/10;
		}j=0;
		while(c){
			sum[2][j++]=c%10;
			c=c/10;
		}
		for(i=3;i<=99;++i){
			q=p=0;
			for(j=0;j<=110;++j){
				p=sum[i-1][j]+sum[i-3][j]+q+sum[i-2][j];
				sum[i][j]=(sum[i-1][j]+sum[i-3][j]+sum[i-2][j]+q)%10;
				q=p/10;
			}
		}
		for(i=109;i>=0;--i){
			if(sum[99][i]!=0)break;
		}
		for(j=i;j>=0;--j)
			printf("%d",sum[99][j]);
		printf("\n");
	}
	return 0;
}
时间: 2024-10-17 14:52:07

NYOJ 某种序列的相关文章

Nyoj 114 某种序列(大数)

某种序列 时间限制: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, A1, A2 <= 100000000) 数据以EOF结束 输出 对于输入的每一行输出A99的值 样例输入 1 1 1 样例输出 69087442470169316923566147 #inc

nyoj114 某种序列(大数)

题目114 题目信息 运行结果 本题排行 讨论区 某种序列 时间限制: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, A1, A2 <= 100000000) 数据以EOF结束 输出 对于输入的每一行输出A99的值 样例输入 1 1 1 样例输出 690874

nyoj 114 某种序列 【java大数】

rt 代码: import java.util.Scanner; import java.math.*; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); BigInteger a, b, c, ans, temp1, temp2; while(cin.hasNextBigInteger()){ a = cin.nextBigInteger(); b =

NYOJ题目114某种序列

----------------------------------------- 迭代相加即可 AC代码: 1 import java.math.BigInteger; 2 import java.util.Scanner; 3 4 public class Main { 5 6 public static void main(String[] args) { 7 8 Scanner sc=new Scanner(System.in); 9 10 while(sc.hasNextBigInte

nyoj 114某种排序(水 大数+优化大数)

某种序列 时间限制: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, A1, A2 <= 100000000) 数据以EOF结束 输出 对于输入的每一行输出A99的值 样例输入 1 1 1 样例输出 69087442470169316923566147 来源 水

20160417~20160423

又是一周总结时间~中间有一周停了是因为本弱去准备考试了.下星期就是GDOI了,本弱还是去旅游!比赛什么的……蒟蒻早已准备退役了. 20160418: 1.bzoj3223 http://www.lydsy.com/JudgeOnline/problem.php?id=3223 题意:一个数列,支持区间翻转操作. 代码: 1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 #define in

[LeetCode] next_permutation

概念 全排列的生成算法有很多种,有递归遍例,也有循环移位法等等.C++/STL中定义的next_permutation和prev_permutation函数则是非常灵活且高效的一种方法,它被广泛的应用于为指定序列生成不同的排列.本文将详细的介绍prev_permutation函数的内部算法. 按照STL文档的描述,next_permutation函数将按字母表顺序生成给定序列的下一个较大的序列,直到整个序列为减序为止.prev_permutation函数与之相反,是生成给定序列的上一个较小的序列

XTU1202:逆序数

题目描写叙述 有n张卡片,分别标有数字1~n. 有一天Silence把他们按某种序列排好.然后从第一张開始取出一张,再拿一张放到最后面.再取出一张,再拿出一张放到最后面...知道n张卡片所有取走. 把取出的卡片按取出的顺序排好,正好是1,2.3,4,....,n. 如今.告诉你n,Silence希望你帮他计算原来的序列的逆序数. 比如,n=4时.原来的序列应该是1,3,2.4.这样,先取出卡片1,再把卡片3放到最后面,序列变成了2.4,3.再把2取出来,4放到后面.序列变成了3,4.再把3取出来

湘潭月赛 逆序数

逆序数 Accepted : 10   Submit : 27 Time Limit : 1000 MS   Memory Limit : 65536 KB 题目描述 有n张卡片,分别标有数字1~n.有一天Silence把他们按某种序列排好,然后从第一张开始取出一张,再拿一张放到最后面,再取出一张,再拿出一张放到最后面...知道n张卡片全部取走.把取出的卡片按取出的顺序排好,正好是1,2,3,4,....,n.现在,告诉你n,Silence希望你帮他计算原来的序列的逆序数.例如,n=4时,原来的