华华给月月出题
Posted acm1ruoji
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华华给月月出题相关的知识,希望对你有一定的参考价值。
题目链接:
注意到x^n是个积性函数就能做了,然后就是一波线性筛素数+快速幂的操作
#include <bits/stdc++.h> using namespace std; #define re register #define ll long long const int mod=1e9+7; const int maxn=1.3*10000000; void read(int &a) { a=0; int d=1; char ch; while(ch=getchar(),ch>‘9‘||ch<‘0‘) if(ch==‘-‘) d=-1; a=ch-‘0‘; while(ch=getchar(),ch>=‘0‘&&ch<=‘9‘) a=a*10+ch-‘0‘; a*=d; } void write(int x) { if(x<0) putchar(45),x=-x; if(x>9) write(x/10); putchar(x%10+‘0‘); } int vis[maxn],p[maxn]; int quickmod(int x,int y) { int result=1; int base=x; while(y) { if(y&1) result=1ll*result*base%mod; base=1ll*base*base%mod; y>>=1; } return result; } int main() { int n; read(n); int ans=1,cnt=1; for(re int i=2;i<=n;i++) { if(!vis[i]) p[cnt++]=i,vis[i]=quickmod(i,n); for(re int j=1;j<=cnt&&p[j]*i<=n;j++) { vis[i*p[j]]=1ll*vis[i]*vis[p[j]]%mod; if(i%p[j]==0) break; } ans^=vis[i]; } write(ans); return 0; }
以上是关于华华给月月出题的主要内容,如果未能解决你的问题,请参考以下文章