【数学】【P5076】 Tweetuzki 爱整除
Description
对于一个数 \(k\),找到任意一个 \(x\),满足 \(0~\leq~k~\leq~x~\leq~10^{18}\) 且对于任意一个 \(x\) 进制数,把该数字各数位上的数字相加,最后得出的值若可以被 \(k\) 整除,则该数可以被 \(k\) 整除。
Input
输入仅包含一行一个整数 \(k\)
Output
输出一行一个整数代表任意一个符合要求的答案
Hint
\(2~\leq~k~\leq~10^9\)
Solution
考虑题目中给出的例子,各个位上的数加起来被三整除的数能够被三整除,我们来分析一下原因:
不妨设这个数 \(x\) 是两位数,否则将两位看成一位做数学归纳:
设 \(x~=~10~a~+~b\),则
\[x~=~10~a~+~b~=~a~+~b~+~9~a
\]
又
\[x~\equiv~0~(\bmod~3)~,~9a~\equiv~0~(\bmod~3)
\]
于是
\[a~+~b~\equiv~0~(\bmod~3)
\]
类似的可以发现,当一个进制数相邻两位的差值可以被 \(k\) 整除时,该数可以被 \(k\) 整除。
设这是个 \(x\) 进制数,则更高一位减更低一位的差值为 \(x~-~1\)
于是 \(x~-~1~\equiv~0~(\bmod~k)\)
任意输出一个 \(x\) 即可。最简单的当然是输出 \(k~+~1\)。
Code
a = int(input())
print(a + 1)