공부/백준

백준 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