| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1354402 | luvwinter | Savrsen (COCI17_savrsen) | C++20 | 570 ms | 156984 KiB |
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int , int>
#define fi first
#define se second
#define FOR(i , l , r) for(int i = (l) ; i <= (r); i++)
#define FOD(i , r , l) for(int i = (r) ; i >= (l) ; i--)
#define endl '\n'
const int N = 1e7 + 1;
int prime[N];
int mnprime[N];
void sang() {
FOR(i , 1 , N - 1) prime[i] = 1;
prime[1] = 0;
FOR(i , 2 , N - 1) {
if(prime[i]) {
mnprime[i] = i;
for(int j = i * i ; j <= N - 1 ; j += i) {
prime[j] = 0;
if(mnprime[j] == 0) mnprime[j] = i;
}
}
}
}
int power(int a , int b) {
if(b == 0) return 1;
int t = power(a , b / 2);
t *= t;
if(b % 2) t *= a;
return t;
}
int sumofdiv(int n) {
if(n == 1) return 1;
int orn = n;
int total = 1;
int currprime = mnprime[n];
int cnt = 1;
n /= mnprime[n];
while(n > 1) {
if(currprime != mnprime[n]) {
int sum = 0;
for(int j = 0 ; j <= cnt ; j++) {
sum += power(currprime ,j);
}
total *= (sum);
currprime = mnprime[n];
cnt = 1;
}
else{
cnt++;
}
n /= mnprime[n];
}
if(cnt) {
int sum = 0;
for(int j = 0 ; j <= cnt ; j++) {
sum += power(currprime , j);
}
total *= sum;
}
return abs(orn - (total - orn));
}
void solve () {
int a , b; cin >> a >> b;
int res = 0;
FOR(i , a , b) {
res += sumofdiv(i);
}
cout << res;
// cout << sumofdiv(6);
}
main () {
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
sang();
solve();
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
