标签:
| input | output |
|---|---|
1 |
10 |
//0.031 206 KB
#include<stdio.h>
#include<string.h>
using namespace std;
int dp[10][107];
int main()
{
int n,j;
memset(dp,0,sizeof(dp));
for(int i=1;i<=9;i++)dp[1][i]++;//从最高位往下找,最高位只能使1~9
for(int i=2;i<=9;i++)
for(int j=1;j<=81;j++)
{
dp[i][j]=dp[i-1][j];//第一部分
for(int k=1;k<=9;k++)//第二部分
if(j-k>0)dp[i][j]+=dp[i-1][j-k];
}
while(scanf("%d",&n)!=EOF)
{
int sum=0;
if(n==1)printf("10\n");
else
{
for(int i=1;i<=9;i++)//将各个位数符合条件的加起来
sum+=dp[i][n];
printf("%d\n",sum);
}
}
return 0;
}
ural 1353. Milliard Vasya's Function
标签:
原文地址:http://blog.csdn.net/crescent__moon/article/details/42678365