※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 4328번 문제인 기초 나머지 계산이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/4328
4328번: 기초 나머지 계산
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 3개의 정수가 한 줄로 이루어져 있다. 첫 번째 숫자는 b이고, 2보다 크거나 같고, 10보다 작거나 같은 값을 가진다. 두 번째
www.acmicpc.net
2 이상 10 이하의 10진수 정수 b, b진법 1000자리(이하)수 p, b진법 9자리(이하)수 m이 주어질 때 b를 p로 나눈 "나머지"를 구하는 문제이다. 단, 문제의 나머지 정의에 따르면 m=0인 경우 p를 출력해야한다. 아래는 m=0인 경우를 제외하고 설명한다.
1000자리 수를 정수로 보관하는 대신문자열로 보관하면 쉽게 수를 읽어올 수 있다.
정답 또한 b진법 수로 출력해야 함에 유의하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int b; string p, mm;
while (cin >> b >> p >> mm) {
int m = 0;
for (auto l : mm) m = m * b + l - '0';
if (m == 0) {
cout << p << '\n';
continue;
}
int ans = 0;
for (auto l : p) {
ans = ans * b + l - '0';
ans %= m;
}
if (ans == 0) {
cout << 0 << '\n';
continue;
}
stack<int> stk;
while (ans) {
stk.push(ans % b);
ans /= b;
}
while (!stk.empty()) {
cout << stk.top();
stk.pop();
}
cout << '\n';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 14713 // C++] 앵무새 (0) | 2022.07.10 |
---|---|
[BOJ 25024 // C++] 시간과 날짜 (0) | 2022.07.10 |
[BOJ 15240 // C++] Paint bucket (0) | 2022.07.10 |
[BOJ 1600 // C++] 말이 되고픈 원숭이 (0) | 2022.07.10 |
[BOJ 24954 // C++] 물약 구매 (0) | 2022.07.10 |