작성일 :

문제 링크

15633번 - Fan Death

설명

자연수 n의 모든 약수 합에 5를 곱하고 24를 뺀 값을 구하는 문제입니다.


접근법

약수 합을 구할 때 n의 제곱근까지만 순회하면 효율적입니다.

i가 n의 약수이면 n을 i로 나눈 값도 약수이므로, 두 값이 같지 않으면 둘 다 더합니다.

약수 합을 구한 뒤 5를 곱하고 24를 빼면 됩니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;

class Program {
  static void Main() {
    var n = int.Parse(Console.ReadLine()!);
    var sum = 0;
    for (var i = 1; i * i <= n; i++) {
      if (n % i != 0) continue;
      var pair = n / i;
      if (i == pair) sum += i;
      else sum += i + pair;
    }
    var ans = 5 * sum - 24;
    Console.WriteLine(ans);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;
  int sum = 0;
  for (int i = 1; i * i <= n; i++) {
    if (n % i) continue;
    int pairVal = n / i;
    if (i == pairVal) sum += i;
    else sum += i + pairVal;
  }
  cout << 5 * sum - 24 << "\n";

  return 0;
}