8320번 - 직사각형을 만드는 방법
직사각형을 만드는 방법은 약수들을 이용하면 된다.
단, 중복되는 약수들은 피해야 한다. 문제에서의 조건처럼.
for문을 통해 i*i <= n 이 되는 곳까지만 계산하면 중복도 피하고, 약수의 갯수도 구할 수 있게 된다.
<정답 코드>
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 | #include<iostream> using namespace std; long long go(int n) { long long ret = 0; for (int i = 1; i*i <= n; i++) { if (n%i == 0) { ret++; } } return ret; } int main() { long long n, ans = 0; cin >> n; for (int i = 1; i <= n; i++) { ans += go(i); } printf("%d\n", ans); return 0; } | cs |
반응형