CF 449E Jzzhu and Squares解题报告
题目大意
题解
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
typedef long long LL;
typedef vector<LL> Poly;
const LL MOD=1000000007;
const int H=6;
LL gcd(LL a,LL b){return !b?a:gcd(b,a%b);
}
LL lcm(LL a,LL b){return a*b/gcd(a,b);
}
LL quickpow(LL a,LL n){LL ans=1;while(n){if(n&1) ans=(ans*a)%MOD;a=(a*a)%MOD;n>>=1;}return ans;
}
LL inverse(LL a){return quickpow(a,MOD-2);
}
void print(Poly a){for(int i=0;i<a.size();i++){cout<<a[i]<<" ";}cout<<endl;
}
Poly operator * (Poly a,LL b){for(int i=0;i<a.size();i++){a[i]*=b;a[i]%=MOD;}return a;
}
Poly operator / (Poly a,LL b){return a*inverse(b);
}
Poly operator + (Poly a,Poly b){Poly c;int n=max(a.size(),b.size());c.resize(n);for(int i=0;i<a.size();i++){c[i]+=a[i];c[i]%=MOD;}for(int i=0;i<b.size();i++){c[i]+=b[i];c[i]%=MOD;}return c;
}
Poly operator * (Poly a,Poly b){Poly c;c.resize(a.size()+b.size()-1);for(int i=0;i<a.size();i++){for(int j=0;j<b.size();j++){c[i+j]+=a[i]*b[j]%MOD;c[i+j]%=MOD;}}return c;
}
const int SIZEN=1000010;
LL calc_presum_with(Poly a,LL ps[]){LL ans=0;for(int i=0;i<a.size();i++){ans+=(a[i]*ps[i])%MOD;ans%=MOD;}return ans;
}
Poly give_Fsum_L(void){//the component without gcdstatic LL A[10];A[0]=1;Poly ans(A,A+1);A[0]=0,A[1]=1;ans=ans*Poly(A,A+2);A[0]=1,A[1]=1;ans=ans*Poly(A,A+2);A[0]=1,A[1]=2;ans=ans*Poly(A,A+2);ans=ans/3;A[0]=0,A[1]=0,A[2]=-3;ans=ans+Poly(A,A+3);return ans;
}
LL G[SIZEN]={0};
LL phi[SIZEN];
LL P[SIZEN][H],PG[SIZEN][H];
void work(LL N,LL M){static LL A[10]; if(N>M) swap(N,M);//N是较小者A[0]=M+1,A[1]=-1;Poly D(A,A+2);A[0]=N+1,A[1]=-1;D=D*Poly(A,A+2);Poly F=give_Fsum_L();Poly F1=D*F;LL ans=0;ans+=calc_presum_with(F1,P[N]);ans%=MOD;A[0]=2;Poly F2=D*Poly(A,A+1);ans+=calc_presum_with(F2,PG[N]);ans%=MOD;ans=(ans+MOD)%MOD;printf("%I64d\n",ans);
}
void prepare(void){for(int i=1;i<SIZEN;i++){//精妙的求phi方法 phi[i]+=i;for(int j=i+i;j<SIZEN;j+=i){phi[j]-=phi[i];}}for(int g=1;g<SIZEN;g++){//求gcd(x,i)的前缀和 G[g]+=g;G[g]%=MOD;for(int x=2*g,d=2;x<SIZEN;x+=g,d++){G[x]+=(g*phi[d]%MOD);G[x]%=MOD;}}for(int i=0;i<H;i++){P[0][i]=PG[0][i]=0;}for(LL x=1;x<SIZEN;x++){LL p=1;for(int i=0;i<H;i++){P[x][i]=(P[x-1][i]+p)%MOD;PG[x][i]=(PG[x-1][i]+(p*G[x])%MOD)%MOD;p=(p*x)%MOD;}}
}
int main(){prepare();LL T,N,M;scanf("%I64d",&T);while(T--){scanf("%I64d%I64d",&N,&M);work(N,M);}return 0;
}
CF 449E Jzzhu and Squares解题报告相关推荐
- codeforces 450B. Jzzhu and Sequences 解题报告
题目链接:http://codeforces.com/problemset/problem/450/B 题目意思:给出 f1 和 f2 的值,以及n,根据公式:fi = fi-1 + fi+1,求出f ...
- 【解题报告】博弈专场 (CF 2000~2200)前五题
[解题报告]博弈专场 (CF 2000+)前五题 A:Fox and Card Game | CF388C 题意 思路 代码 B:Berzerk | CF786A 题意 思路 代码 C:Ithea P ...
- 【解题报告】CF DIV3 #ROUND 734 A~D1
[解题报告]CF DIV2 #ROUND 707 A~D 比赛链接 比赛评价: 一般性,有段时间没打了,甚至忘记多组输入hh.顺便吐槽一下翻译软件确实不行,以后还是直接看英文好了 A. Polycar ...
- 【解题报告】CF DIV2 #ROUND 723 A~D
[解题报告]CF DIV2 #ROUND 723 A~D 比赛链接 比赛评价: 发现这场十点就开了,然后就和ph巨佬一起玩了一场.我两分别再A和B罚时罚飞了,索性后面把C1,C2整出来了 排名2500 ...
- 【解题报告】随便练练二(CF 2300)
[解题报告]随便练练二(CF 2300) A:Antimatter | CF383D 题意 思路 :DP 代码 B:Physical Education Lessons | CF915E 题意 思路一 ...
- 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...
- 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告(十三)中国剩余定理(ACM / OI)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告(四)生成函数(ACM/ OI)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
最新文章
- 如何去重一个Oracle表
- 超图js版本在地图上使用图标标记地理点
- 图Graph--农夫过河问题(BFS/DFS应用)
- date.gethour_Java LocalDateTime类| 带示例的getHour()方法
- 新浪uc2010免费下载
- 在plist文件中增删改查
- docker cp :用于容器与主机之间的数据拷贝
- linux查进程内存问题,关于linux下内存问题排查的工具
- tensorflow使用object detection实现目标检测超详细全流程(视频+图像集检测)
- 挖掘频繁项集之FP-Growth算法
- 第一台全自动电子计算机,关于世界上第一台电子计算机ENIAC的叙述错误的是() senny全自动微电脑水位控制仪...
- fatal: unable to access 'https://github.com:***' 或者本机ping不通github.com解决方法
- hadoop put命令的格式_Hadoop Shell命令(基于linux操作系统上传下载文件到hdfs文件系统基本命令学习)...
- 快门速度、光圈、ISO(感光度)
- Unity 模拟投影器(Projector Simulator)
- reduceByKey中的加号是什么意思
- Java面向对象设计(面向对象)
- [linux] linux sed命令删除一行/多行
- 编程-----魔法币投币方案设计
- 微软Office 2013定价及版本详情曝光