프로그래밍/CodeUp
CodeUp[Q_2028] : 삼각수
조원일
2020. 3. 23. 14:41
728x90
1. 문제
https://codeup.kr/problem.php?id=2028
삼각수
약수의 개수가 처음으로 k개를 넘는 삼각수를 출력한다.
codeup.kr
[출처 : 코드업(https://codeup.kr/)]
이번 문제는 약수의 개수가 처음으로 k개를 넘는 삼각수를 구하는 문제입니다.
※ 삼각수란?
1 = 1
3 = 1 + 2
6 = 1 + 2 + 3
이와 같은 규칙으로 나온수를 삼각수라한다.
2. 해답
#include <stdio.h>
int Aliquot_count(int num) {
int count = 0;
int tmp = 0;
if (num == 1) return 1;
for (int i = 1; i <= num / 2; i++) {
if (num % i == 0) {
// 약수 구하기
if (i > (num / i)) break;
if ((num / i) == i) count++;
else count += 2;
}
}
return count;
}
int main()
{
int num;
int tmp = 1;
int i = 2;
scanf("%d", &num);
while (Aliquot_count(tmp) <= num) {
tmp += i; // 삼각수
i++;
}
printf("%d\n", tmp);
return 0;
}