hdu 5382 GCD?LCM!
来源:互联网 发布:怕出头知乎 编辑:程序博客网 时间:2024/06/06 02:14
题意:[exp]为一个判断式,若exp为真,则值为1,否则为0
F[n]=segema(1,n,segema(1,n,[lcm(i,j)+gcd(i,j)>=n]))
S[n]=segema(1,n,F[i])
解:
#include <stdio.h>#include <string.h>#define ll __int64const int maxn=5+1e6;const ll mod=258280327;int num[maxn];int prime[maxn];ll s[maxn];ll t[maxn];ll g[maxn];ll f[maxn];void getg(){ int all=0; memset(num,0,sizeof(num)); g[1]=1; g[0]=0; for(int i=2;i<maxn;i++) { if(!num[i]) { g[i]=2; prime[all++]=i; } for(int j=0;j<all&&i*prime[j]<maxn;j++) { num[i*prime[j]]=1; if(i%prime[j]) { g[i*prime[j]]=g[i]*2%mod; } else { g[i*prime[j]]=g[i]; break; } } } return ;}void gett(){ memset(t,0,sizeof(t)); for(int i=1;i<maxn;i++) { for(int j=i;j<maxn;j+=i) { t[j]=(t[j]+g[j/i-1])%mod; } } return ;}void gets(){ f[1]=1; s[1]=1; for(int i=2;i<maxn;i++) { f[i]=(f[i-1]+2*i-1-t[i-1])%mod; s[i]=((s[i-1]+f[i])%mod+mod)%mod; } return ;}int main(){ getg(); gett(); gets(); int t,n; while(scanf("%d",&t)!=-1) { while(t--) { scanf("%d",&n); printf("%I64d\n",s[n]); } } return 0;}
0 0
- HDU 5382 GCD?LCM!
- hdu 5382 GCD?LCM!
- hdu 5382 GCD?LCM!
- HDU 5382 GCD?LCM!
- GCD and LCM HDU
- GCD and LCM HDU
- GCD and LCM HDU
- hdu 3071 Gcd & Lcm game
- HDU 3071 Gcd & Lcm game
- hdu 4497 GCD and LCM
- hdu 4497 GCD and LCM
- HDU - 4497 GCD and LCM
- HDU - 4497 GCD and LCM
- HDU 4497 GCD and LCM
- HDU 4497 GCD and LCM
- HDU 5341 Gcd and Lcm
- HDU 4497 GCD and LCM
- HDU 1108 最小公倍数(GCD,LCM)
- 在英文版的ubuntu14.04下如何使用中文输入法
- 设计模式之mvc
- 查看移动平均价的历史记录
- NY 1100 WAJUEJI which home strong!
- ios学习之旅---指针也不难
- hdu 5382 GCD?LCM!
- iOS开发常用快捷键
- Openerp轻易实现根据时间段进行搜索
- POJ 3253 Fence Repair
- 2、装饰者模式
- matlab数据类型转换遇到问题,及解决办法,sym,double ,vpa转换
- SAP系统资产盘盈盘亏的处理
- django-rest-framework指南(1):序列化
- Java日志框架——查看“完整的执行的SQL语句”