Sum (欧拉定理)
2024-09-04 18:04:05
题面
提示:无限输入
题解
一看这题的数据
...............................
这也太大了,必须边输入边取模才行,
但是式子很复杂,所以必须推出一些结论。
因为Xk是有顺序的,所以相当与给班级分名额的经典组合数例子,S(k)就等于C(N-1,K-1)
答案应该是
这是不是就是杨辉三角的第n行的和?
因为杨辉三角的第n行所有的数都是由顶上的那一个1得到的,每一个数aij对下一行的贡献都是2aij,所以开头的那一个1对第n行的贡献就是 1<<n ,也就是2^(n-1)。
因为1e9 + 7是质数,所以我们用欧拉定理来做:
CODE
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
LL mod = 1e9 + 7ll,mod2 = 1e9 + 6ll;
LL n,m,i,j,s,o,k;
char ss[1000005];
LL superread() {
LL f = 1,x = 0,cn = 0;char s = ss[++cn];
while(s < '0' || s > '9') {if(s == '-') f = -1;s = ss[++cn];}
while(s >= '0' && s <= '9') {x = x * 10ll + s - '0';x %= mod2;s = ss[++cn];}
return x * f % mod2;
}
LL qkpow(LL a,LL b) {
if(b == 0) return 1;
if(b == 1) return a;
LL as = qkpow(a,b >> 1) % mod;
return as * as % mod * qkpow(a,b & 1) % mod;
}
int main() {
while(~scanf("%s",ss + 1)) {
n = superread();
printf("%lld\n",qkpow(2,n) * qkpow(2,mod - 2) % mod);
}
return 0;
}
最新文章
- zoj1530 bfs
- 【Android XMPP】 学习资料收集贴(持续更新)
- Qt之多线程
- Mac/Windows开发跨平台.NET Core 控制台程序
- 使用map做数组与链表去重
- Gulp-自动化编译sass和pug文件
- EJB_开发单表映射的实体bean
- Idea+Maven创建scala项目
- 此博客不再更新和分享UiPath文章
- 7. Oracle数据加载和卸载
- <;转>;jmeter(八)断言
- Asp.Net 之 OnClientClick 与 OnClick 的执行顺序
- css重要知识点
- 高阶函数map(),filter(),reduce()
- Educational Codeforces Round 13 B. The Same Calendar 水题
- datagrid在MVC中的运用09-实现排序
- Hadoop的体系结构之MapReduce的体系结构
- BZOJ 4011 【HNOI2015】 落忆枫音
- 用IO字节流复制文件-CopyFileByIo
- a标签点击时跳出确认框