[数论 反演] BZOJ 4833 最小公倍佩尔数
生活随笔
收集整理的這篇文章主要介紹了
[数论 反演] BZOJ 4833 最小公倍佩尔数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當時比賽時靈機一動 把gigi?1喂給了OEIS
然后就找到了 233 就是這個咯
然后就水過去了
題解?題解我還沒看 先挖個坑
UPD:跟這個題是一毛一樣的咯
#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; typedef long long ll;const int N=1000005; int P; inline ll Pow(ll a,int b){ll ret=1;for (;b;b>>=1,a=a*a%P)if (b&1)ret=ret*a%P;return ret; }int n; ll f[N],g[N];#define read(x) scanf("%d",&(x))int main(){int Q;freopen("t.in","r",stdin);freopen("t.out","w",stdout);read(Q);while (Q--){read(n); read(P);f[0]=0; f[1]=g[1]=1;for (int i=2;i<=n;i++) f[i]=((f[i-1]<<1)%P+f[i-2])%P,g[i]=f[i];for (int i=1;i<=n;i++){ll inv=Pow(g[i],P-2);for (int j=i+i;j<=n;j+=i)g[j]=g[j]*inv%P;}ll lcm=1,ans=0;for (int i=1;i<=n;i++)lcm=lcm*g[i]%P,ans+=lcm*i%P;printf("%lld\n",ans%P);}return 0; }總結
以上是生活随笔為你收集整理的[数论 反演] BZOJ 4833 最小公倍佩尔数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis的maven依赖
- 下一篇: 双边距重叠问题