공부/백준

백준 1075번: 나누기(C++)

상연 2020. 11. 29. 16:26

목차

www.acmicpc.net/problem/1075

 

1075번: 나누기

첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다.

www.acmicpc.net

코드

#include <iostream>
using namespace std;

int main() {
	int N, F;
	int answer = 0;
	cin >> N >> F;
	
	N /= 100;
	N *= 100;
	
	while((N+answer) % F != 0 && answer < 100) answer ++;
	
	if(answer < 10) printf("0%d", answer);
	else printf("%d", answer);
	
}

풀이

정수 N의 가장 뒤 두 자리를 적절히 바꿔서 F로 나누어떨어지게 합니다.

단 그 뒤에 두 자리는 나누어 떨어지는 수 중 가장 작은 수 여야만 합니다.

우선 N의 범위를 보면 2,000,000,000보다 작은 수 입니다.

이는 int형 범주에 들어가므로 N와 F는 int형으로 선언해 주어도 문제가 없습니다.

 

이후, 뒤에 두 자리를 00으로 만들어 주기 위해서는 주어진 N을 100으로 나누고 다시 그 수에 100을 곱하면 됩니다.

ex) N = 8951
N /= 100
N -> 89
N *= 100
N -> 8900

이후 정답이 될 answer를 0부터 99까지 N에 더해가면서 F로 나누었을때 나누어 떨어지면 그 answer를 출력합니다.

단, answer 가 1의 자리일 경우, 앞에 0을 붙여 두 자리수로 출력 해 줍니다.

'공부 > 백준' 카테고리의 다른 글

백준 1110번: 더하기 사이클(C++)  (0) 2020.12.01
백준 1977번: 완전제곱수(C++)  (0) 2020.11.30
백준 9251번: LCS(C++)  (0) 2020.11.28
백준 1912번: 연속합(C++)  (0) 2020.11.27
백준 2565번: 전깃줄(C++)  (0) 2020.11.26