제출 #969639

#제출 시각아이디문제언어결과실행 시간메모리
969639RandomUserSavrsen (COCI17_savrsen)C++17
120 / 120
1247 ms49580 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int maxn = 1e7 + 5; bool sieve[maxn+1]; int mpf[maxn+1]; ll exp(ll a, ll b) { ll ans = 1; while(b) { if(b & 1) ans = ans * a; a = a * a; b /= 2; } return ans; } int main() { for(int i=2; i<=maxn; i++) { if(sieve[i]) continue; mpf[i] = i; for(int j=2*i; j<=maxn; j+=i) { sieve[j] = i; mpf[j] = i; } } int l, r; ll ans = 0; cin >> l >> r; for(int i=l; i<=r; i++) { map<int, int> cnt; int x = i; while(x > 1) { cnt[mpf[x]]++; x /= mpf[x]; } ll div = 1; for(auto &[d, c] : cnt) div *= ((exp(d, c+1) - 1) / (d - 1)); ans += abs((ll)i - (div - i)); } cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...