博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[nowcoder]再编号
阅读量:5053 次
发布时间:2019-06-12

本文共 1401 字,大约阅读时间需要 4 分钟。

链接:

每变化一次,tot=tot*(n-1),且每两个数之差delta*=-1,直接根据这两个性质暴力循环100000次找到答案即可。

代码:

1 #include
2 #include
3 #include
4 #include
5 #define int long long 6 using namespace std; 7 const int N=1e5+5,mod=1e9+7; 8 int n,m,a[N],sum,b[N]; 9 inline int read()10 {11 int x=0,w=1;12 char c=getchar();13 while (!isdigit(c)&&c!='-') c=getchar();14 if (c=='-') c=getchar(),w=-1;15 while (isdigit(c))16 {17 x=(x<<1)+(x<<3)+c-'0';18 c=getchar();19 }20 return x*w;21 }22 #undef int23 int main()24 {25 #define int long long26 n=read(),m=read();27 for (int i=1;i<=n;i++)28 {29 a[i]=read(); sum=(sum+a[i])%mod;30 }31 b[2]=n-2;32 for (int i=3;i<=100000;i++)33 {34 b[i]=1ll*(n-1)*b[i-1]%mod;35 if (i&1) b[i]=(b[i]+1)%mod;36 else b[i]=(b[i]-1+mod)%mod;37 }38 while (m--)39 {40 int x=read(),t=read();41 if (!t) {printf("%lld\n",a[x]); continue;}42 if (t==1) {printf("%lld\n",(sum-a[x]+mod)%mod); continue;}43 if (t==2) {printf("%lld\n",1ll*(n-2)*sum%mod+a[x]%mod); continue;}44 int ans=b[t]; ans=ans*sum%mod;45 if (t&1) ans=(ans-a[x]+mod)%mod; else ans=(ans+a[x])%mod;46 printf("%lld\n",ans);47 }48 return 0;49 }

 

转载于:https://www.cnblogs.com/Slrslr/p/9534058.html

你可能感兴趣的文章
EnableEventValidation错误原因分析以及解决办法
查看>>
Java编程练习(四)——集合框架应用
查看>>
快速排序法
查看>>
win10 添加项目右键用vscode打开
查看>>
关于Kb/s,KB/s的一些知识
查看>>
2019-1-9笔记
查看>>
程序员求职之道(《程序员面试笔试宝典》)之面试官箴言?
查看>>
加速网站访问的一些实践体会
查看>>
中国象棋程序的设计与实现(一)--项目截图
查看>>
十一月书稿
查看>>
两只小熊队高级软件工程第九次作业敏捷冲刺4
查看>>
推荐一个好用的虚拟主机
查看>>
ulimit
查看>>
php代码执行顺序
查看>>
php 写入数据到MySQL以及从MySQL获取数据,页面出现乱码的解决方法
查看>>
MYSQL视图的学习笔记
查看>>
爬虫基础
查看>>
laravel常用artisan命令
查看>>
130292015038 张雅周 第一章作业
查看>>
获取文件字段并生产一个新的页面
查看>>