반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 14928 큰 수(BIG) 본문

백준(Baekjoon) 문제

백준 14928 큰 수(BIG)

huiung 2019. 1. 26. 21:41
반응형
https://www.acmicpc.net/problem/14928

문제와 채점은 위 사이트에서 확인 하실 수 있습니다.

 

이 문제는 어떤 수를 20000303 으로 나눈 나머지를 구하는 문제입니다.

 

문제는 입력 될 수 있는 숫자가 어마어마하게 크므로 정수형 데이터로는 이 숫자를 담을 수가 없습니다.

 

따라서 큰수를 20000303으로 나누는 나머지를 어떻게 구할지 생각해보면 가장 첫번째 자리부터 20000303으로 나눈후 그 나머지에 10을 곱하고 그수와 두번째 자리 수를 더해서 또 나누고 그것을 20000303으로 나누고 또 그나머지에 10을 곱하고 더하는 방식으로 진행하면 최종적으로 큰수를 20000303으로 나눈 나머지를 얻게 됩니다.    즉 예를 들어  4321을 11로 나눈다면 이 방법은 4000을 11로 나누고 300을 나누고 20을 나누고 1을 나누어서 모두 더하여서 나누어주는 방법입니다. 그래서 저는 우선 숫자를 string으로 받고 각자리에 해당하는 문자를 숫자로 변경한뒤 연산을 진행 하였습니다.

 

다음은 코드입니다.

 

#include <iostream>
#include <string>


using namespace std;

int main(void) {
	string str;
	cin >> str;
	
	int  remain = 0;
	for(int i = 0; i < str.size(); i++)
		remain = (remain * 10 +( str[i] - '0')) % 20000303;	
	
	cout<<remain;
	return 0;
}
반응형