알고리즘/BOJ

백준 10696번 Prof. Ossama

꾸준함. 2018. 9. 15. 01:49

문제 링크입니다: https://www.acmicpc.net/problem/10696


초기에는 Big Integer를 이용해 계산하는 방법을 떠올렸지만 구현하기가 힘들 것 같아서 다른 방법을 생각해봤습니다.


알고리즘은 생각보다 간단합니다.

1. 제일 큰 자릿수부터 X에 대한 나머지(remainder)를 구합니다.

2. 이후에는 (remainder * 10 + 현재 자릿수)의 X에 대한 나머지를 remainder에 저장해줍니다. (한 자리씩 더 파악)

3. 모든 자릿수에 대해 2번을 반복한 뒤 remainder를 출력해주면 됩니다.


#include <iostream>

#include <string>

using namespace std;

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0);

        int test_case;

        cin >> test_case;

 

        for (int t = 0; t < test_case; t++)

        {

                 string num;

                 int divisor;

                 cin >> num >> divisor;

 

                 long long remainder = 0;

                 for (int i = 0; i < num.size(); i++)

                 {

                         int digit = num[i] - '0';

                         remainder = (remainder * 10 + digit) % divisor;

                 }

                 cout << "Case " << t + 1 <<": " << remainder << "\n";

        }

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 15752번 Hoofball  (0) 2018.09.15
백준 15751번 Teleportation  (0) 2018.09.15
백준 3040번 백설 공주와 일곱 난쟁이  (0) 2018.09.14
백준 2822번 점수 계산  (0) 2018.09.14
백준 11774번 MOLEKULE  (0) 2018.09.14