코드상으로 a는 N의 마지막 두 자리이고, b는 N을 F로 나눴을 때 나머지이다.
N이 F로 나누어떨어지려면 N에서 b만큼이 필요없다는 의미라고 생각했다.
이 때 마지막 두 자리(a)가 b보다 작으면 a에서 b를 뺄 수 없다.
a가 b보다 작다는 것은 a에서 b를 빼고 다시 F를 더해준 값이 N의 마지막 뒤 두 자리를 최소로 만드는 방법이라는 말과 같다.
a가 b보다 작지 않다면 나머지값을 한 번 빼주고,
a가 음수가 되기 전까지 F를 최대한으로 빼주면 된다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N, F;
cin >> N >> F;
int a = N % 100;
int b = N % F;
if (a < b) {
a = (N - b + F) % 100;
}
else {
a -= b;
while (a - F >= 0) a -= F;
}
if (a / 10 < 1) cout << "0";
cout << a;
return 0;
}
호로록 풀릴 줄 알고 골랐는데 그렇진 않았다.
더 간단한 방법이 있을 것 같긴 한데 더파고싶진않은