題目連結: Uva10633
解題想法
N, M
其中M為N除去最小位數
用數學式表達即 M = ( N - (N%10) ) / 10
題目Input: N-M
希望Output:所有可能的N
首先從數學式著手 M = ( N - (N%10) ) / 10
題目給的Input: N-M = N - ( N - (N%10) ) / 10
所以 10(N-M) = 9N + (N%10)
又N%10的可能解為0, 1, 2, 3, 4, 5, 6, 7, 8, 9
(10k, 10k+1, 10k+2, ……, 10k+9)
到此題目就變得十分簡單明瞭了 跟名稱Easy一樣(重點誤)
開個for迴圈 宣告i 從0 ~ 10
首先檢查 10*(N-M) - (N%10) 是否被 9 整除
if整除 則計算N的值 並將他輸出
題目測資可能會有10^16次方大 記得用long long儲存
C++程式碼
#include <iostream>
using namespace std;
int main()
{
long long int k, n;
while(cin >> k && k != 0){
for(int i = 9; i >= 0; i--) {
if((10*k-i)%9 == 0){ //先判斷是否整除 而非先直接除再判斷是否為整數
n = (10*k-i)/9.0;
cout << n << " ";
}
}
cout << endl;
}
return 0;
}