일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- House of Orange
- 완전 탐색
- 에라토스테네스의 체
- 큐
- fsb
- BFS
- RTL
- 백트래킹
- 수학
- DFS
- 브루트 포스
- 스택
- 이진 탐색
- 연결리스트
- 문자열 처리
- syscall
- ROP
- OOB
- 이분 탐색
- BOF
- 다이나믹 프로그래밍
- tcache
- off by one
- 분할 정복
- 스위핑 알고리즘
- 동적 계획법
- heap
- 이진트리
- 투 포인터
- 포맷스트링버그
Archives
- Today
- Total
SDJ( 수돈재 아님 ㅎ )
[C++] 17425 - 약수의 합 본문
문제 링크 : https://www.acmicpc.net/problem/17425
17425번: 약수의 합
두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더한 값이고, f(A)로 표현한다. x보다 작거나 같은 모든 자연수 y의 f(y)값을 더한 값은 g(x)로 표현한다. 자연수 N이 주어졌을 때, g(N)을 구해보자.
www.acmicpc.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
unsigned long long int dp[1000005];
void init()
{
for(int i = 1; i <= 1000000; ++i)
{
for(int j = i; j <= 1000000; j += i)
dp[j] += i;
}
for(int i = 2; i <= 1000000; ++i)
dp[i] += dp[i-1];
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t, n;
init();
cin >> t;
while(t--)
{
cin >> n;
cout << dp[n] << endl;
}
return 0;
}
|
'알고리즘 > Backjoon' 카테고리의 다른 글
[C++] 1038 - 감소하는 수 (0) | 2020.01.29 |
---|---|
[C++] 16953 - A → B (0) | 2020.01.29 |
[C++] 5014 - 스타트링크 (0) | 2020.01.29 |
[C++] 12852 - 1로 만들기 2 (0) | 2020.01.29 |
[C++] 14502 - 연구소 (0) | 2020.01.29 |
Comments