소감 ¶
2005/03/05 Accepted 0:00.074 64
1학년 때 풀어서 틀렸었던 문제를 다시 풀어보았다. 일단 이동곱셈의 규칙성을 연습장에 끄적이는 도중 쉽게 발견할 수 있었고, 간단히 사칙연산으로 구현할 수 있었다. 마지막 자리숫자가 0일 경우의 예외처리를 해 준 후 바로 통과.
1학년 때 풀어서 틀렸었던 문제를 다시 풀어보았다. 일단 이동곱셈의 규칙성을 연습장에 끄적이는 도중 쉽게 발견할 수 있었고, 간단히 사칙연산으로 구현할 수 있었다. 마지막 자리숫자가 0일 경우의 예외처리를 해 준 후 바로 통과.
코드 ¶
~cpp
// no550 - Multiplying by Rotation
#include <iostream>
using namespace std;
int main()
{
int base, lsd, factor; // 진수, 마지막자리수, 곱셈수
int carryIn, carryOut;
int temp;
int nDigit;
while (cin >> base >> lsd >> factor)
{
if (lsd == 0)
{
cout << "1\n";
continue;
}
temp = lsd;
carryIn = (temp * factor) / base;
temp = (temp * factor) % base;
nDigit = 2;
while (true)
{
carryOut = (temp * factor + carryIn) / base;
temp = (temp * factor + carryIn) % base;
if (carryOut == 0 && temp == lsd)
{
cout << nDigit << endl;
break;
}
nDigit++;
carryIn = carryOut;
}
}
return 0;
}










