코딩하기 좋은날
백준 14928 큰 수(BIG) 본문
반응형
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;
}
반응형
'백준(Baekjoon) 문제' 카테고리의 다른 글
백준 10216 Count Circle Groups (0) | 2019.01.29 |
---|---|
백준 3933 라그랑주의 네 제곱수 정리 (0) | 2019.01.28 |
백준 1038 감소하는 수 (0) | 2019.01.26 |
백준 1937 욕심쟁이 판다 (0) | 2019.01.25 |
백준 9020 골드바흐의 추측 (0) | 2019.01.22 |