poj 3982(水題)
阿新 • • 發佈:2021-12-05
#include<iostream> #include<cstring> using namespace std; int data[105][205],a[3],len[105]; void Plus(int i){ int k,l; for(k=i-3;k<i;k++){ for(l=0;l<len[k];l++){ data[i][l] += data[k][l]; if(data[i][l]>=10){ data[i][l+1] += data[i][l]/10; data[i][l] %= 10; } } while(data[i][l]>=10){ data[i][l+1] = data[i][l]/10; data[i][l] %= 10; l++; } if(data[i][l]>0)l++; len[i] = max(len[i],l); } } int main(){ while(scanf("%d%d%d",&a[0],&a[1],&a[2])==3){ memset(data,0,sizeof data); memset(len,0,sizeof len); for(int i=0;i<3;i++){ int j=0; while(a[i]>0){ data[i][j++] = a[i]%10; a[i]/=10; } len[i] = j; } for(inti=3;i<100;i++){ Plus(i); } for(int i=len[99]-1;i>-1;i--){ printf("%d",data[99][i]); } printf("\n"); } return 0; }