【題解】ZeroJudge e519: 10633 – Rare Easy Problem

【題目敘述】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";
    }
}
分享本文 Share with friends