bzoj3944: Sum
来源:互联网 发布:上海萌动网络 编辑:程序博客网 时间:2024/06/07 15:55
挖坑不填。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define ll long longusing namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9')ch=getchar(); while(ch>='0'&&ch<='9'){f=(f<<1)+(f<<3)+ch-'0';ch=getchar();} return f;}ll phi[2000005],mu[2000005],p[100005],q[100005];bool vis[100005];int cas,n,m,cnt,c[1000005];ll get_p(int x){ return x<=m?phi[x]:p[n/x];}ll get_q(int x){ return x<=m?mu[x]:q[n/x];}void solve(int x){ if(x<=m) return; int i,j=1,t=n/x; if(vis[t]) return ;vis[t]=1; p[t]=((ll)x+1)*x>>1;q[t]=1; while(j<x) { i=j+1;j=x/(x/i);solve(x/i); p[t]-=get_p(x/i)*(j-i+1);q[t]-=get_q(x/i)*(j-i+1); }}int main(){ cas=read();m=2000000; phi[1]=mu[1]=1; for(int i=2;i<=m;i++) { if(!phi[i]) { phi[i]=i-1;mu[i]=-1;c[++cnt]=i; } for(int j=1;j<=cnt;j++) { if(i*c[j]>m) break; if(i%c[j]) { phi[i*c[j]]=phi[i]*(c[j]-1); mu[i*c[j]]=-mu[i]; } else { phi[i*c[j]]=phi[i]*c[j]; mu[i*c[j]]=0; break; } } } for(int i=2;i<=m;i++) { phi[i]+=phi[i-1]; mu[i]+=mu[i-1]; } while(cas--) { n=read(); memset(vis,0,sizeof(vis)); if(n<=m) printf("%lld %lld\n",phi[n],mu[n]); else { solve((ll)n); printf("%lld %lld\n",p[1],q[1]); } }}
阅读全文
0 0
- BZOJ3944: Sum
- 【bzoj3944】Sum
- bzoj3944: Sum
- bzoj3944 Sum
- bzoj3944: Sum
- [bzoj3944]Sum
- [BZOJ3944] Sum - 杜教筛
- BZOJ3944——Sum
- [BZOJ3944]SUM 杜教筛
- BZOJ3944: Sum 杜教筛
- [BZOJ3944]Sum-杜教筛
- [杜教筛] BZOJ3944: Sum
- bzoj3944: Sum//杜教筛
- BZOJ3944 Sum 杜教筛
- Sum
- sum
- sum
- Sum
- 实现跑马灯效果的TextView
- 温故而知新(六)Java基础:IO流(此文章暂时未写完)
- _tcsncpy_s的src 会被自动覆盖成 fe fe fe fe
- 分布式通讯类型及特点
- Ruby 字符串(String)
- bzoj3944: Sum
- 【Java利器之】Intellij Idea--Debug使用(mac)
- 快速排序 -- 算法小结
- Longest Common Substring
- Java+SpringMVC中自实现定时加载更新数据库数据到内存的方法
- S5PV210 PWM
- 线程间异步调用BeginInvoke
- php之初级PHPExcel
- 注解开发详解