【題目敘述】https://zerojudge.tw/ShowProblem?problemid=e519
【解題想法】
- 題目給定 X (= N – M),求 N。
- 依題意,N = 10 * M + d0 (假設 d0 為 N 的個位數字)
- X = N – M = 9 * M + d0
- M = (X – d0) / 9 為整數,(X – d0) 可以被 9 整除。
- 10 <= N-M <= 10^18,需宣告為long long
#include <iostream>
using namespace std;
int main() {
long long N, M, X, d0;
string s; //N - M = s = X
while (cin >> s){
if (s == "0") break;
X = 0;
for (int i = 0; i < s.size(); i++){
X *= 10;
X += s[i] - '0';
}
for (d0 = 9; d0 >= 0; d0--){
if ((X - d0) % 9 == 0){
M = (X - d0) / 9;
N = X + M;
cout << N << " ";
}
}
cout << "\n";
}
}