Problem
題目網址
中文網址
Solution
1 2 3
| N = 10M + k X = N - M = 10M + k - M M = (X - k) / 9
|
而能讓 X-k 被 9 整除的 k 可能不只一個,但由於 M 是 N 去掉一位數,所以 (N - k) / 10 後會剛好等於 M。
如此 k 便不能大於 9 ,否則會使 N 的十位數增加。
e.g.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| X = 27 M = (27 - k) / 9 N = 10M + k
k = 0 M = 3 N = 10 x 3 + 0
k = 9 M = 2 N = 10 x 2 + 9
k = 18 M = 1 N = 10 x 1 + 18 = 28 此時 N 的十位數就成為 2 了
|
Code
UVa 106331 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <cstdio> typedef long long LL;
int main() { LL x; while (scanf("%lld", &x) && x) { bool first = true; for (int i = 9; i >= 0; --i) if ((x - i) % 9 == 0) { if (!first) putchar(' '); printf("%lld", (LL)(x - i) / 9 * 10 + i); first = false; } putchar('\n'); }
return 0; }
|