模拟_大数(HDU_1715)
#include <stdio.h> #include <string.h> #define M 1002 char map[M][220] = {"0","1","1"}; void add(char *aStr, char *bStr, char *cStr)//aStr + bStr = cStr { int ai = strlen(aStr)-1,bi = strlen(bStr)-1,ci = 0; int all,over = 0; for(; ai>=0 || bi>=0; ai--,bi--) { all = (ai>=0 ? aStr[ai]-'0' : 0) + (bi>=0 ? bStr[bi]-'0' : 0) + over; cStr[ci++] = all % 10 + '0'; over = all / 10; } if(over > 0) cStr[ci++] = over + '0'; cStr[ci] = '\0'; strrev(cStr); } void init() { for(int i=3; i<M; i++) { add(map[i-2],map[i-1],map[i]); } } int main(int argc, char* argv[]) { #ifdef __MYLOCAL freopen("in.txt","r",stdin); #endif init(); int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); printf("%s\n",map[n]); } return 0; }