标签:blog http io ar os sp for div on
1
10
/* 思路:题目意思就是求1~1000000000之间数字之和等于s 状态方程 :d[i]][j]=d[i][j]+d[i-1][j-k] (0<=k<=j&&k<=9) d[i][j]表示i位的数字之和等于j 推导:(数字之和等于j 的个数) = (i位数字之和等于j的个数) + (i-1位数字之和j-k的个数) */ #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<cstdlib> #include<algorithm> using namespace std; int dp[10][100],n; int main() { for(int i=1;i<10;i++) dp[1][i]=1; for(int i=1;i<10;i++) for(int j=1;j<=9*i;j++) for(int k=0;k<=j&&k<10;k++) dp[i][j]+=dp[i-1][j-k]; while(scanf("%d",&n)!=EOF) { int ans=0; if(n!=1) { for(int i=1;i<10;i++) ans+=dp[i][n]; printf("%d\n",ans); } else printf("10\n"); } return 0; }
标签:blog http io ar os sp for div on
原文地址:http://www.cnblogs.com/a972290869/p/4099957.html