milliard Vasya 函数

来源:互联网 发布:如何防止网络渗透策反 编辑:程序博客网 时间:2024/05/17 08:36
 

Description

Vasya是一个刚入门的数学家。
他决定对科学做出一个重要的贡献,以便世界知名。
但怎么才能做到呢?像勾股定理那样有趣的事实都已经被证明过了。
对!他要做出一些他自己的东西,原创性的。
因此他想出了一个Vasya函数定理。

Vasya函数(VF)相当简单:第N个VF函数在点S的值,就是从1到N之间的整数当中,各位数字之和等于S的数的个数。
Vasya给你一个任务,找到milliard VF值,即 N = 1000000000 时的VF值。

Input

整数S (1 ≤ S ≤ 81)

Output

milliard VF 在 S 点的值。

Sample Input

1

Sample Output

10

#include <iostream>using namespace std;int f[10][82];//f[i][j] = E(f[i-1][j-k]) (0 <= k <= j)int main(){    int s;    cin >> s;    if(s == 1)    {        cout << 10 << endl;        return 0;    }    f[0][0] = 1;    for(int i = 1; i <=9; i++)        f[1][i] = 1;    for(int i = 2; i <= 9; i++)    {        for(int j = 1; j <= 81; j++)        {            int sum = 0;            for(int k = 0; k < j; k++)                if( k <= 9 && (i-1)*9 >= j-k)                    sum += f[i-1][j-k];            f[i][j] = sum;        }    }    int ans = 0;    for(int i = 1; i <= 9; i++)        ans += f[i][s];    cout << ans << endl;    return 0;}