• HDU4475 Downward paths 递推


    题意:给定一个很优美的三角形,问从第1层走到第N层的走法有多少种?

    解法:由于每一层能够向左右行走到任意位置再向下走,所以设f[i]为从第一层到第 i 层的方案数,则有递推关系f[i] = f[i-1] * 2 * i。由于最后的结果是对1000003取余,所以1000003之后的结果一定都为零。

    代码如下:

    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <set>
    using namespace std;
    
    const int MOD = 1000003;
    long long N;
    int f[1000005];
    
    void pre() {
        f[1] = 2;
        for (int i = 2; i <= 1000003; ++i) {
            f[i] = (1LL * f[i-1] * 2 * i) % MOD;
        }
    }
    
    int main() {
        int T;
        pre();
        scanf("%d", &T);
        while (T--) {
            scanf("%I64d", &N);
            if (N < 1000003) {
                printf("%d\n", f[N]);    
            } else {
                puts("0");    
            }
        }
        return 0;    
    } 
  • 相关阅读:
    20171121
    20171117
    20171106
    20171031
    20171024
    20170924
    20170721
    商品的分类
    会员价格的修改
    会员价格删除
  • 原文地址:https://www.cnblogs.com/Lyush/p/3110848.html
Copyright © 2020-2023  润新知