Submission #19851

#TimeUsernameProblemLanguageResultExecution timeMemory
19851tonyjjw팔찌 (kriii4_V)C++14
100 / 100
663 ms54220 KiB
//* #include <stdio.h> #include <string.h> #include <ctype.h> #include <time.h> #include <stdlib.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <numeric> #include <functional> #define MOD 1000000007 #define MAX 0x3f3f3f3f #define MAX2 0x3f3f3f3f3f3f3f3fll #define ERR 1e-10 #define mp make_pair #define all(x) (x).begin(), (x).end() #pragma warning(disable:4996) using namespace std; typedef long long ll; typedef long double ldb; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef pair<double, double> pdd; int n, m; ll pi[1040000]; ll powm[1040000]; int comp[1040000]; ll xans[1040000]; ll inv[2040000]; ll xsum[1040000]; ll mul_inv(ll a, ll b=MOD) { ll b0=b, t, q; ll x0=0, x1=1; if(b == 1) return 1; while(a > 1) { q=a/b; t=b, b=a%b, a=t; t=x0, x0=x1-q*x0, x1=t; } if(x1 < 0) x1+=b0; return x1; } ll modpow(ll x, ll y) { ll ans=1; while(y) { if(y%2) ans*=x, ans%=MOD; x*=x, x%=MOD, y/=2; } return ans; } int main() { int i, j, k; cin>>n>>m; //int t=clock(); for(i=1;i<=n;i++) pi[i]=i; powm[0]=1; for(i=1;i<=n;i++) powm[i]=powm[i-1]*m, powm[i]%=MOD; for(i=1;i<=n*2;i++) inv[i]=mul_inv(i); ll ans=0; for(i=1;i<=n;i++) { xsum[i]=powm[i]*inv[i]%MOD; } for(i=1;i<=n;i++) xsum[i]+=xsum[i-1], xsum[i]%=MOD; for(i=1;i<=n;i++) { ll u=0; int k=1; for(j=i;j<=n;j+=i) { if(j != i && i >= 2) comp[j]=1; if(i >= 2 && !comp[i]) { pi[j]/=i, pi[j]*=i-1; } //u+=powm[k++]*inv[j*2]%MOD; } u+=xsum[n/i]*inv[2*i]%MOD; //u%=MOD; ans+=pi[i]*u%MOD; } ans%=MOD; for(i=1;i<=n;i++) { if(i%2 == 0) { ans+=inv[4]*(m+1)%MOD*powm[i/2]%MOD; } else { ans+=inv[2]*powm[(i+1)/2]%MOD; } } ans++; ans%=MOD; cout<<ans; return 0; } //*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...