작성일 :

문제 링크

14682번 - Shifty Sum

설명

정수 n을 10배씩 k번 시프트하며 원본 포함 모든 값을 더한 합을 구하는 문제입니다.


접근법

시프트는 숫자 뒤에 0을 붙이는 것과 같으므로 10을 곱하는 것입니다.

예를 들어 n이 12이고 k가 2이면, 12 + 120 + 1200 = 1332가 됩니다.

합을 n으로 시작하고, k번 반복하며 n에 10을 곱해 합에 누적합니다.


Code

C#

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

class Program {
  static void Main() {
    var n = int.Parse(Console.ReadLine()!);
    var k = int.Parse(Console.ReadLine()!);
    var sum = n;
    for (var i = 0; i < k; i++) {
      n *= 10;
      sum += n;
    }
    Console.WriteLine(sum);
  }
}

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, k;
  if (!(cin >> n)) return 0;
  cin >> k;
  int sum = n;
  for (int i = 0; i < k; i++) {
    n *= 10;
    sum += n;
  }
  cout << sum << "\n";

  return 0;
}