【BZOJ】【P2956】【模积和】【题解】【数学】

来源:互联网 发布:笔记本性能优化 编辑:程序博客网 时间:2024/05/01 14:11

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2956

由于latex挂了就懒得写题解了,水题……

Code:

#include<bits/stdc++.h>using namespace std;typedef long long LL;LL MOD=19940417;LL n,m,sqn,sqm,ans,res;LL power(LL x,LL k,LL p){LL ans=1;for(;k;k>>=1){if(k&1)ans=(ans*x)%p;x=(x*x)%p;}return ans;}LL inv2,inv6;LL sum(LL n){return n*(n+1)%MOD*(2*n+1)%MOD*3323403%MOD;}LL F(LL n,LL m){LL ans=0;for(LL i=1,j;i<=n;i=j+1){j=min(n,m/(m/i));ans+=(m/i)*(i+j)%MOD*(j-i+1)%MOD*9970209%MOD; ans%=MOD;}return ans;}int main(){cin>>n>>m;if(n>m)swap(n,m);ans=(n*n-F(n,n))%MOD*((m*m-F(m,m))%MOD);ans+=-n*n%MOD*m%MOD+F(n,m)*n%MOD+F(n,n)*m%MOD; ans%=MOD;    for(LL i=1,j;i<=n;i=j+1){          j=min(m,min(n/(n/i),m/(m/i)));          ans+=-(n/i)*(m/i)%MOD*((sum(j)-sum(i-1))%MOD)%MOD;          ans%=MOD;      }while(ans<0)ans+=MOD;    cout<<ans%MOD<<endl;return 0;}


0 0