HDU 6363
题意略。
思路:


这里有两个结论需要注意:
1.gcd(a ^ x - 1,a ^ y - 1) = a ^ gcd(x,y) - 1
2.gcd(fib[x],fib[y]) = fib[gcd(x,y)]
详见代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1e6 + ;
const LL mod = 1e9 + ;
const LL mm = 1e9 + ; LL inv[maxn * + ],fac[maxn * + ];
bool check[maxn];
LL prime[maxn],mu[maxn],f[maxn],n,k; LL exgcd(LL a,LL b,LL& x,LL& y){
if(a == && b == ) return -;
if(b == ){
x = ,y = ;
return a;
}
LL d = exgcd(b,a % b,y,x);
y -= a / b * x;
return d;
}
LL rev(LL a,LL n){
LL x,y;
LL d = exgcd(a,n,x,y);
return (x % n + n) % n;
}
void init_inv(){
fac[] = ;
for(LL i = ;i < * maxn;++i) fac[i] = fac[i - ] * i % mod;
inv[ * maxn - ] = rev(fac[ * maxn - ],mod);
for(LL i = * maxn - ;i >= ;--i){
inv[i] = (i + ) * inv[i + ] % mod;
}
}
LL C(LL a,LL b){
LL m = a,n = b;
return ((fac[n] * inv[m]) % mod * inv[n - m]) % mod;
}
void init(){
f[] = ,f[] = ;
for(int i = ;i < maxn;++i){
f[i] = (f[i - ] + f[i - ]) % mm;
}
}
void mobius(){
memset(check,false,sizeof(check));
mu[] = ;
int tot = ;
for(LL i = ;i < maxn;++i){
if(!check[i]){
prime[tot++] = i;
mu[i] = -;
}
for(int j = ;j < tot;++j){
if(i * prime[j] > maxn) break;
check[i * prime[j]] = true;
if(i % prime[j] == ){
mu[i * prime[j]] = ;
break;
}
else mu[i * prime[j]] = -mu[i];
}
}
}
LL qmod(LL a,LL n){
LL ret = ;
while(n){
if(n & ) ret = ret * a % mod;
a = a * a % mod;
n = n>>;
}
return ret;
} int main(){
init_inv();
mobius();
init();
int T;
scanf("%d",&T);
while(T--){
scanf("%lld%lld",&n,&k);
LL denominator = C(n,n + k - );
denominator = rev(denominator,mod);
LL ans = ;
for(int i = ;i <= n;++i){
if(n % i) continue;
LL div = i;
LL contri = (qmod(,f[div]) - + mod) % mod;
LL cnt = ;
for(LL j = div;j <= n;j += div){
if(n % j) continue;
LL d = j;
cnt += mu[d / i] * C(n / d,n / d + k - ) % mod;
cnt = (cnt % mod + mod) % mod;
}
ans += contri * cnt % mod;
ans %= mod;
}
ans = ans * denominator % mod;
printf("%lld\n",ans);
}
return ;
}
HDU 6363的更多相关文章
- hdu 6363 bookshelf
题解讲的很清楚了,直接看代码就懂了 题解:http://bestcoder.hdu.edu.cn/blog/2018-multi-university-training-contest-6-solut ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
- HDU 1796How many integers can you find(容斥原理)
How many integers can you find Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d ...
- hdu 4481 Time travel(高斯求期望)(转)
(转)http://blog.csdn.net/u013081425/article/details/39240021 http://acm.hdu.edu.cn/showproblem.php?pi ...
- HDU 3791二叉搜索树解题(解题报告)
1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...
随机推荐
- apache httpd多后缀解析漏洞复现
apache httpd多后缀解析漏洞复现 一.漏洞描述 Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析 ...
- jQuery通过id和name获取值的区别
$(#'id').函数 $("input[name='name']")
- ruby镜像报错,compass安装报错
在这几天在电脑上安装compass一直报错,很无语.因为安装的ruby和sass都没有问题,虽然是很久之前安装的. sass # 更新sass gem update sass # 检查sass ...
- JS面向对象编程(一):封装
js是一门基于面向对象编程的语言. 如果我们要把(属性)和(方法)封装成一个对象,甚至要从原型对象生成一个实例,我们应该怎么做呢? 一.生成对象的原始模式 假定把猫看 ...
- Active Directory域
引言 在 Microsoft® Windows® 2000 Server 操作系统的诸多增强功能中,Microsoft Active Directory™ 功能的引入意义最为重大,但也最常引起困惑.与 ...
- 【iOS】iOS Error Domain=NSCocoaErrorDomain Code=3840 "未能完成操作。(“Cocoa”错误 3840。)"
昨天遇到的这个问题,详细信息: ----->类和方法__25+[Manager noticeRequest:]_block_invoke399----->错误信息Error Domain= ...
- Hadoop 系列(一)—— 分布式文件系统 HDFS
一.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 ...
- Jenkins 配置 SpringBoot 自动构建部署
服务器版本 Linux version 3.10.0-957.12.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8 ...
- 十分钟带你看一遍ES6新特性
let , const关键字 var 看习惯了java, 看js真的是忍不住想笑,比如说这个var,它太自由了,自由到{}根本限制不住它的生命周期 js的var关键字,无论在何处声明,都会被视为声明在 ...
- 【0806 | Day 9】三张图带你了解数据类型分类和Python深浅拷贝
一.数据类型分类 二.Python深浅拷贝