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

nuoj 114 大数

发布时间:2021-01-12 01:55:51 所属栏目:大数据 来源:网络整理
导读:数列A满足An = An-1 + An-2 + An-3,n = 3? 编写程序,给定A0,A1 和 A2,计算A99 Input 输入包含多行数据? 每行数据包含3个整数A0,A1,A2 (0 = A0,A2 = 32767)? 数据以EOF结束 Output 对于输入的每一行输出A99的值 Sample Input 1 1 1 Sample Output 6908744247

数列A满足An = An-1 + An-2 + An-3,n >= 3?

编写程序,给定A0,A1 和 A2,计算A99
Input
输入包含多行数据?

每行数据包含3个整数A0,A1,A2 (0 <= A0,A2 <= 32767)?
数据以EOF结束
Output
对于输入的每一行输出A99的值
Sample Input
1 1 1
Sample Output

69087442470169316923566147

思路:就是大数暴力硬高,然后我把它变成了10^8进制,而题目保证了输入的a0 a1a2范围在32767 ?所以这个数就直接转化在二维数组字符串的第一位就可以了;

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #define maxn 100000000 using namespace std;? int mp[550][550]; void check(int x,int y) { ? ?int i=0; ? ? ? ?mp[x][0]=y; return ; } int main() { ? ? int a0,a1,a2,i,j,tem; ? ? ?while(scanf("%d%d%d",&a0,&a1,&a2)!=EOF) ? ? ?{ ? ? ? ? ? ? ? ?memset(mp,sizeof(mp)); ? ? ? ? ? ?if(a0==0&&a2==0&&a1==0) ? break;? ? ? ? ? ? ? check(0,a0); ? ? ? ? ? ? check(1,a1); ? ? ? ? ? ? check(2,a2); ? ? ? ? ? ? for(i=3;i<=100;i++) ? ? ? ? ? ? { ?? ? ?tem=0; ? ?for(j=0;j<500;j++) ? ? ? ? ? ? ? ? { ? ?mp[i][j]+=mp[i-3][j]+mp[i-2][j]+mp[i-1][j]+tem; ? ? ? ? ? ? ? ? ? ? if(mp[i][j]>=maxn) ? ? ? ? ? ? ? ? ? ? { ? tem=mp[i][j]/maxn; ? ?mp[i][j]%=maxn; ? ? ? ? ? ? ? ? ? ? ? ?? } else tem=0; ? ? ?} } i=500; while(i>=0&&mp[99][i]==0) ? i--; ? printf("%d",mp[99][i--]); for(;i>=0;i--) printf("%08d",mp[99][i]); printf("n");? } ? ? ? return 0; }

(编辑:核心网)

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

    热点阅读