제출 #19814

#제출 시각아이디문제언어결과실행 시간메모리
19814tonyjjw팔찌 (kriii4_V)C++14
6 / 100
1000 ms93328 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; vector<int> d[1040000]; ll pi[1040000]; int comp[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; for(i=1;i<=n;i++) pi[i]=i; for(i=1;i<=n;i++) { 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; } d[j].push_back(i); } } ll ans=0; for(i=1;i<=n;i++) { ll neck=0; for(auto e : d[i]) { neck+=pi[e]*modpow(m, i/e)%MOD; neck%=MOD; } neck*=mul_inv(i*2, MOD); neck%=MOD; if(i%2 == 0) { neck+=mul_inv(4, MOD)*(m+1)%MOD*modpow(m, i/2)%MOD; neck%=MOD; } else { neck+=mul_inv(2, MOD)*modpow(m, (i+1)/2)%MOD; neck%=MOD; } ans+=neck, ans%=MOD; } ans++; ans%=MOD; cout<<ans; return 0; } //*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...