HDU 1715 大菲波数 (大数问题)
发布时间:2020-12-14 04:13:29 所属栏目:大数据 来源:网络整理
导读:/* 复习大数问题; */ #include iostream#include cstdlib#include cstdio#include cstring#include algorithm#include cmath#include string#include iomanipusing namespace std;int num[1005][55];void add(int *a,int *b,int *c){ int p = 0; int i; int
/* 复习大数问题; */ #include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <string> #include <iomanip> using namespace std; int num[1005][55]; void add(int *a,int *b,int *c) { int p = 0; int i; int minnum = (a[0]<b[0])?a[0]:b[0]; for(i = 1; i <= minnum; i++) { c[i] = (a[i]+b[i]+p)%10000; p = (a[i]+b[i])/10000; } if(a[0]>b[0]) { for( ; i <= a[0]; i++) { c[i] = (a[i] + p)%10000; p = (a[i] + p)/10000; } c[0] = a[0]; if(p) { c[i] = p; c[0]++; } } else if(a[0]=b[0]) { c[0] = a[0]; if(p) { c[i] = p; c[0]++; } } else if(a[0]<b[0]) { c[0] = b[0]; for( ; i <= b[0]; i++) { c[i] = (b[i] + p)%10000; p = (b[i] + p)/10000; } if(p) { c[i] = p; c[0]++; } } } void prin_num(int *a) { printf("%d",a[a[0]]); if(a[0] > 1) for(int i = a[0]-1; i >= 1; i--) printf("%04d",a[i]); printf("n"); } void set() { num[1][0] = 1,num[1][1] = 1; num[2][0] = 1,num[2][1] = 1; for(int i = 3; i <= 1000; i++) { add(num[i-1],num[i-2],num[i]); } } int main(int argc,char *argv[]) { set(); int n,p; scanf("%d",&n); while(n--) { scanf("%d",&p); prin_num(num[p]); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |