e519 - 10633 - Rare Easy Problem
題目描述
題目給定一個數字 N-M,其中 N 是至少兩位數的整數,M 是通過移除 N 的最後一位數字得到的整數。目標是找出所有可能的 N 值。
解題思路
設 N 的最後一位數字為 d,則 N = 10 * M + d。題目給定的值是 N - M,因此 N - M = (10 * M + d) - M = 9 * M + d。
已知 N - M 的值,我們需要找到 M 和 d 的值。
由於 d 是一個 0 到 9 之間的數字,我們可以通過遍歷所有可能的 d 值來找到對應的 M 值。
如果 M 是整數,並且 N = 10 * M + d 至少是兩位數,那麼 N 就是一個可能的解。
題目中特別提到如果 a%9==0,則輸出 b-1 和 b,否則輸出 b。這是因為當 N-M 是 9 的倍數時,存在兩種可能的 N 值。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main(){
cin.tie(0); ios::sync_with_stdio(false);
long long int a;
while(cin >> a){
if(a==0)break;
long long int b=a*10/9;
if(a%9==0)
cout << b-1 << " " << b << "\n";
else
cout << b << "\n";
}
}