這個題容易WA,通常不會注意高精度問題,但對於高精度的處理頗有技巧。html
推薦http://www.cnblogs.com/kuangbin/archive/2012/09/20/2695165.htmlios
裏面給了五種方法,很不錯ide
在這裏附上大神的代碼spa
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 long long a[1100],b[1100],inf; 7 8 int main(){ 9 int n,k,i,j; 10 for(inf=1,i=0;i<18;i++) inf*=10; 11 scanf("%d%d",&n,&k); 12 memset(a,0,sizeof(a)); 13 memset(b,0,sizeof(b)); 14 a[0]=1; 15 for(i=1;i<=k;i++){ 16 for(j=1;j<=n;j++){ 17 if(j-i<0) continue; 18 b[j]=b[j]+b[j-i]+(a[j]+a[j-i])/inf; 19 a[j]=(a[j]+a[j-i])%inf; 20 } 21 } 22 if(b[n]) printf("%I64d",b[n]); 23 printf("%I64d\n",a[n]); 24 return 0; 25 }