UVA10943 How do you add递推打表

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA10943 How do you add递推打表相关的知识,希望对你有一定的参考价值。

Larry is very bad at math — he usually uses a calculator, which worked well throughout college. Unforunately, he is now struck in a deserted island with his good buddy Ryan after a snowboarding accident.
    They’re now trying to spend some time figuring out some good problems, and Ryan will eat Larry if he cannot answer, so his fate is up to you!
    It’s a very simple problem — given a number N, how many ways can K numbers less than N add up to N?
    For example, for N = 20 and K = 2, there are 21 ways:
0+20
1+19
2+18
3+17
4+16
5+15

18+2
19+1
20+0
在这里插入图片描述

Input
Each line will contain a pair of numbers N and K. N and K will both be an integer from 1 to 100, inclusive. The input will terminate on 2 0’s.
Output
Since Larry is only interested in the last few digits of the answer, for each pair of numbers N and K, print a single number mod 1,000,000 on a single line.
Sample Input
20 2
20 2
0 0
Sample Output
21
21

问题链接UVA10943 How do you add
问题简述:(略)
问题分析:组合计算问题,采用递推打表的方式来解决。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* UVA10943 How do you add */

#include <bits/stdc++.h>

using namespace std;

const int N = 100 + 100;
long long c[N + 1][N + 1];

int main()
{
    // Init
    memset(c, 0, sizeof c);
    c[0][0] = 1;
    for (int n = 1; n <= N; n++) {
        c[n][0] = 1;
        for (int k = 1; k <= N; k++)
            c[n][k] = (c[n - 1][k - 1] + c[n - 1][k]) % 1000000;
    }

    int n, k;
    while (~scanf("%d%d", &n, &k) && (n || k))
        printf("%lld\\n", c[n + k - 1][k - 1]);

    return 0;
}

以上是关于UVA10943 How do you add递推打表的主要内容,如果未能解决你的问题,请参考以下文章

UVA10943How do you add?

[2016-3-18]OMG美语每日笔记-How do you get on someone's radar?How do you make them notice you?

c语言:调用函数打印How do you do!

UVa10943

How do you evaluate music?

How do you build a database?