[백준 1075] 나누기 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
정수 N
의 마지막 두 자리를 변경하여 F
로 나누어 떨어지게 만드는 최소의 값을 구하는 문제입니다.
- 입력으로 주어지는
N
은 항상100 이상의 자연수
이며,F
는100 이하의 자연수
입니다. - 조건을 만족하도록
N
의 뒤 두 자리를 바꾸는 것만 허용되며,
가능한 경우 중 가장 작은 값을 찾아야 합니다.
예를 들어 N = 23442
, F = 75
일 경우,
뒤 두 자리를 00
으로 바꾸면 23400
이 되고, 이는 75
로 나누어 떨어지므로 정답은 00
입니다.
접근법
N
에서 뒤 두 자리를 없애고,00
으로 교체한 상태에서 시작하여
0
부터99
까지의 수를 차례로 더해가며F
로 나누어떨어지는 값을 찾습니다.- 정답은 항상 두 자리 수 형식으로 출력해야 하므로,
한 자리 수일 경우에도 앞에0
을 붙여 출력해아 함에 주의합니다.
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() {
int n = int.Parse(Console.ReadLine());
int f = int.Parse(Console.ReadLine());
n -= n % 100;
for (int i = 0; i < 100; i++) {
if ((n + i) % f == 0) {
Console.WriteLine(i.ToString("D2"));
return;
}
}
}
}
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, f; cin >> n >> f;
n -= n % 100;
for (int i = 0; i < 100; i++) {
if ((n + i) % f == 0) {
cout << setw(2) << setfill('0') << i << "\n";
return 0;
}
}
return 0;
}