转载:牛客练习赛17 c 规律题
转载:https://www.cnblogs.com/zzqc/p/8995135.html
C.
链接:https://www.nowcoder.com/acm/contest/109/C
来源:牛客网
题目描述
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个整数表示答案。
输入
3 1 1 2 3
输出
1 3 6
输入
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,有除法记得取逆元。
![](/assets/blank.gif)
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 }
![](/assets/blank.gif)
转载于:https://www.cnblogs.com/vainglory/p/9021579.html
转载:牛客练习赛17 c 规律题相关推荐
- 牛客练习赛85 A~D题题解
比赛链接:https://ac.nowcoder.com/acm/contest/11175 目录 A 科学家的模型 B 音乐家的曲调 C 哲学家的沉思 D 数学家的迷题 A 科学家的模型 模拟题,对 ...
- 牛客练习赛51(C题 勾股定理)
勾股定理 题目描述 给出直角三角形其中一条边的长度n,你的任务是构造剩下的两条边,使这三条边能构成一个直角三角形. 输入描述: 一个整数n. 输出描述: 另外两条边b,c.答案不唯一,只要输出任意一组 ...
- 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)
牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
- 踩不出足迹(牛客练习赛88 )
踩不出足迹(牛客练习赛88 ) 题意: 长度为n的数组a,每个数是一个k位二进制 定义一下操作: 令第一次得到的结果为 a1a_1a1.你需要从第二个数开始,每次可以选择与上一次得到的结果异或或者同 ...
- 牛客网【每日一题】3月25日 tokitsukaze and Soldier
牛客网[每日一题]3月25 题号:NC50439 名称: tokitsukaze and Soldier 来源:练习赛50-C 链接: link. 来源:牛客网 时间限制:C/C++ 1秒,其他语言2 ...
- 牛客练习赛29 题解
牛客练习赛29 A. 可持久化动态图上树状数组维护01背包 题解 这题跟标题没有任何关系- 贪心的使得负数删除的时候下标尽可能大,然后正数的时候下标尽可能小. 观察到每个数下标最大的时候就是它的初始下 ...
- 牛客练习赛22C Bitset
牛客练习赛22C 一共有 n个数,第 i 个数是 xi xi 可以取 [li , ri] 中任意的一个值. 设 ,求 S 种类数. 感觉二进制真是一个神奇的东西. #include <iost ...
- 牛客练习赛68 B.牛牛的算术
牛客练习赛68 B.牛牛的算术 题目链接 题目描述 牛牛最近学习了取模是什么 于是他看到了下面这一道题: 多次询问:每次询问包含一个正整数 n 要求你输出下列结果 ∏i=1n∑j=1i∑k=1ji×j ...
- 2021牛客练习赛90
2021牛客练习赛90 B.寒冬信使 C.盾与战锤 B.寒冬信使 题目链接:https://ac.nowcoder.com/acm/contest/11180/B code: #include< ...
最新文章
- Quartz 框架快速入门(二)
- 21天养成习惯?不一定
- 强化学习笔记4:强化学习分类
- 详解使用fastboot为Android刷入原厂镜像
- 第二阶段—个人工作总结08
- python算法书推荐-你也能看得懂的Python算法书
- Python里那些可爱的游戏模块们
- 学习面试题Day08
- Linux远程管理协议(RFB、RDP、Telnet和SSH)
- Spring Cloud Alibaba迁移指南(三):极简的 Config 1
- 横岗无线充android,史上第一款“真无线充”,真正实现随时随地无线充电!
- QT5.10+MinGW+OpenCV3.4.2编译
- Nginx + uWSGI + Flask + Vhost
- hive优化--增加减少map数
- HTML5 - WebSQL
- 浅谈jQuery WeUI框架
- 百度SEO站群超简约实惠的个人简历模板源码
- 二、单链表的头插法建表和尾插法建表
- Assertion-Based Verification01-----Introduction to OVL
- 信息化、数字化与数智化傻傻分不清
热门文章
- Freemarker 最简单的例子程序
- 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划
- 浅谈C#的垃圾回收-关于GC、析构函数、Dispose、and Finalize asp.net GC之析构函数详解...
- C# string byte[] 转换
- Redis命令 - sortedSet
- 推荐一个可以减少开发量50%的插件!
- 为什么需要注册中心?是用 Eureka 还是 Nacos?
- 分布式系统如何设计,看看Elasticsearch是怎么做的
- 阿里P7程序员、资深架构师,竟不知jvm、红黑树!这都能进大厂?
- 吃透这套架构演化图,从零搭建Web网站也不难!