• F、CSL 的神奇序列 【规律】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛)


    题目传送门:https://ac.nowcoder.com/acm/contest/551/F

    题目描述 

    CSL 有一个神奇的无穷实数序列,他的每一项满足如下关系:

    对于任意的正整数 n ,有 nk=0akank=w2∑k=0nakan−k=w2 , 并且 a0=wa0=w 。

    CSL 很清楚这样的序列是唯一的,他现在想考考你,你能快速告诉他这个序列的第 n 项是多少吗?

    为了不让你感到难过,对每次询问你只要输出 2nn!2nn! 倍的 anan 对 998244353 取模后的结果即可。

    输入描述:

    第一行有两个整数 w 和 q ,其中 w 的含义如题意所述, q 表示接下来的询问次数。

    接下来的 q 行,每行输入一个数 n 。
     
    1w,n1061≤w,n≤106
    1q1051≤q≤105

    输出描述:

    对于每一次询问, 在一行输出一个整数 v ,表示 v=2nn!anmod 998244353v=2nn!⋅anmod 998244353
    示例1

    输入

    复制
    1 2
    1
    2

    输出

    复制
    1
    3

    解题思路:

    直接求出前五项最后结果,推规律,结果是一个奇数项的累乘(1*3*5*7*9* ... *(2*i-1) )

    AC code:

     1 #include <bits/stdc++.h>
     2 #define INF 0x3f3f3f3f
     3 #define LL long long
     4 using namespace std;
     5 const int MAXN = 1e6+10;
     6 const LL mod = 998244353;
     7 LL w, ans[MAXN];
     8 int q;
     9 int main()
    10 {
    11     LL N, res;
    12     ans[1] = 1;
    13     for(LL i = 2; i < MAXN; i++){
    14         ans[i] = ans[i-1]*(2*i-1)%mod;
    15         ans[i]%=mod;
    16     }
    17     scanf("%lld %d", &w, &q);
    18     while(q--){
    19         scanf("%lld", &N);
    20         res = ans[N]*w%mod;
    21         printf("%lld
    ", res);
    22     }
    23     return 0;
    24 }
    View Code
  • 相关阅读:
    分布式编程下的CAS
    《码农翻身》读后感
    PHP Socket服务器搭建和测试
    在Java中使用Hibernate,使用不同数据库服务名
    linq的表关系解决办法
    SilverLight中使用WCF Ria出现的问题empty domain service class
    cmd中更换用户权限
    Flex中TabBar与ViewStack
    使用ApdComPort
    拖动控件
  • 原文地址:https://www.cnblogs.com/ymzjj/p/10665299.html
Copyright © 2020-2023  润新知