转载:https://www.cnblogs.com/zzqc/p/8995135.html

C.
链接:https://www.nowcoder.com/acm/contest/109/C
来源:牛客网

题目描述

给定长度为n的数组a,定义一次操作为:
1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007;
2. 执行a = s;
现在问k次操作以后a长什么样。

输入描述:

第一行两个整数n,k(1 <= n <= 2000, 0 <= k <= 1,000,000,000);第二行n个整数表示a数组(0 <= a

i

<= 1,000,000,000)。

输出描述:

一行n个整数表示答案。
示例1

输入

3 1
1 2 3

输出

1 3 6

示例2

输入

5 0
3 14 15 92 6

输出

3 14 15 92 6

    首先注意到这个操作可以用矩阵来表示,设原数组为一个行向量A,k次操作之后得到的行向量B, 转移矩阵为X,则有A*X

k

=B ,观察发现X是一个N*N的上三角矩阵,

  可即使使用了快速幂,这个矩阵一次乘法的时间复杂度也不允许接受,因为N<=2000,N^3过于庞大,枚举了这个矩阵的前几次方之后发现一个规律,这个矩阵只要知道第一行的元素就可以推出这个全部的矩阵,每一列都来自于第一行的一个子段,再观察发现这些数字都是杨辉三角里的数,准确的说这一行数对应杨辉三角的一列(斜着),对于X^k,这个矩阵,第一行的元素就是( C(k-1,0) , C(k,1) , C(k+1,2),.....C(k+n-2,n-1)),组合数的公式C(n,r)=C(n,r-1)*(n-r+1)/r,C(n,r)=C(n-1,r)+C(n-1,r-1),联立得出C(n,r)=C(n-1,r-1)*n/r,有除法记得取逆元。  
 1 #include<iostream>2 #include<cstring>3 #include<queue>4 #include<cstdio>5 #include<stack>6 #include<set>7 #include<map>8 #include<cmath>9 #include<ctime>
10 #include<time.h>
11 #include<algorithm>
12 using namespace std;
13 #define mp make_pair
14 #define pb push_back
15 #define debug puts("debug")
16 #define LL long long
17 #define pii pair<int,int>
18 #define eps 1e-10
19 double R=6371009;
20
21 LL MOD=1e9+7;
22 LL q[2020];
23 LL a[2020];
24  void gcd(LL a,LL b,LL &d,LL &x,LL &y)
25   {
26       if(!b) {d=a;x=1;y=0;}
27       else {gcd(b,a%b,d,y,x);y-=x*(a/b);}
28   }
29  LL inv(LL a,LL n)
30  {
31    LL d,x,y;
32    gcd(a,n,d,x,y);
33    return d==1?(x+n)%n:-1;
34  }
35 int main()
36 {
37     LL n,m,i,j,k;
38     scanf("%lld%lld",&n,&k);
39     for(i=1;i<=n;++i) scanf("%lld",a+i);
40     k--;
41     q[1]=1;
42     for(i=2;i<=n;++i){
43         q[i]=q[i-1]*((k+i-1)%MOD)%MOD*inv(i-1,MOD);
44         q[i]%=MOD;
45     }
46     //for(i=2;i<=n;++i) q[i]+=q[i-1],q[i]%=MOD;
47     for(i=1;i<=n;++i){
48         LL tmp=0;
49         for(j=1;j<=i;++j){
50             tmp+=a[j]*q[i-j+1];
51             tmp%=MOD;
52         }
53         printf("%lld%c",tmp,i==n?'\n':' ');
54     }
55     return 0;
56 }

转载于:https://www.cnblogs.com/vainglory/p/9021579.html

转载:牛客练习赛17 c 规律题相关推荐

  1. 牛客练习赛85 A~D题题解

    比赛链接:https://ac.nowcoder.com/acm/contest/11175 目录 A 科学家的模型 B 音乐家的曲调 C 哲学家的沉思 D 数学家的迷题 A 科学家的模型 模拟题,对 ...

  2. 牛客练习赛51(C题 勾股定理)

    勾股定理 题目描述 给出直角三角形其中一条边的长度n,你的任务是构造剩下的两条边,使这三条边能构成一个直角三角形. 输入描述: 一个整数n. 输出描述: 另外两条边b,c.答案不唯一,只要输出任意一组 ...

  3. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  4. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  5. 踩不出足迹(牛客练习赛88 )

    踩不出足迹(牛客练习赛88 ) 题意: 长度为n的数组a,每个数是一个k位二进制 定义一下操作: 令第一次得到的结果为 a1a_1a1​.你需要从第二个数开始,每次可以选择与上一次得到的结果异或或者同 ...

  6. 牛客网【每日一题】3月25日 tokitsukaze and Soldier

    牛客网[每日一题]3月25 题号:NC50439 名称: tokitsukaze and Soldier 来源:练习赛50-C 链接: link. 来源:牛客网 时间限制:C/C++ 1秒,其他语言2 ...

  7. 牛客练习赛29 题解

    牛客练习赛29 A. 可持久化动态图上树状数组维护01背包 题解 这题跟标题没有任何关系- 贪心的使得负数删除的时候下标尽可能大,然后正数的时候下标尽可能小. 观察到每个数下标最大的时候就是它的初始下 ...

  8. 牛客练习赛22C Bitset

    牛客练习赛22C 一共有 n个数,第 i 个数是 xi  xi 可以取 [li , ri] 中任意的一个值. 设 ,求 S 种类数. 感觉二进制真是一个神奇的东西. #include <iost ...

  9. 牛客练习赛68 B.牛牛的算术

    牛客练习赛68 B.牛牛的算术 题目链接 题目描述 牛牛最近学习了取模是什么 于是他看到了下面这一道题: 多次询问:每次询问包含一个正整数 n 要求你输出下列结果 ∏i=1n∑j=1i∑k=1ji×j ...

  10. 2021牛客练习赛90

    2021牛客练习赛90 B.寒冬信使 C.盾与战锤 B.寒冬信使 题目链接:https://ac.nowcoder.com/acm/contest/11180/B code: #include< ...

最新文章

  1. Quartz 框架快速入门(二)
  2. 21天养成习惯?不一定
  3. 强化学习笔记4:强化学习分类
  4. 详解使用fastboot为Android刷入原厂镜像
  5. 第二阶段—个人工作总结08
  6. python算法书推荐-你也能看得懂的Python算法书
  7. Python里那些可爱的游戏模块们
  8. 学习面试题Day08
  9. Linux远程管理协议(RFB、RDP、Telnet和SSH)
  10. Spring Cloud Alibaba迁移指南(三):极简的 Config 1
  11. 横岗无线充android,史上第一款“真无线充”,真正实现随时随地无线充电!
  12. QT5.10+MinGW+OpenCV3.4.2编译
  13. Nginx + uWSGI + Flask + Vhost
  14. hive优化--增加减少map数
  15. HTML5 - WebSQL
  16. 浅谈jQuery WeUI框架
  17. 百度SEO站群超简约实惠的个人简历模板源码
  18. 二、单链表的头插法建表和尾插法建表
  19. Assertion-Based Verification01-----Introduction to OVL
  20. 信息化、数字化与数智化傻傻分不清

热门文章

  1. Freemarker 最简单的例子程序
  2. 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划
  3. 浅谈C#的垃圾回收-关于GC、析构函数、Dispose、and Finalize asp.net GC之析构函数详解...
  4. C# string byte[] 转换
  5. Redis命令 - sortedSet
  6. 推荐一个可以减少开发量50%的插件!
  7. 为什么需要注册中心?是用 Eureka 还是 Nacos?
  8. 分布式系统如何设计,看看Elasticsearch是怎么做的
  9. 阿里P7程序员、资深架构师,竟不知jvm、红黑树!这都能进大厂?
  10. 吃透这套架构演化图,从零搭建Web网站也不难!