这题思路很简单啊,就是从小到大枚举全由1组成的数,直到找到第一个能被n整除的就是a,输出它的1的个数。
k基本可以认为就是那个全由1组成的数,c就是它包含的1的个数,枚举下一个k的方法就是k=k*10+1;,这能理解吧?因为:
11=1*10+1
111=11*10+1
1111=111*10+1
…………
a要能被n整除,至少a要大于等于n吧?所以第一个循环while(k
而取模操作有如下数学性质:
(a*b)%p=(a%p*b)%p (a+b)%p=(a%p+b)%p
具体证明过程这里不说了,想知道的话自己查资料。
那么(k%n*10+1)%n==(k*10+1)%n,由于题目中n<1w,k%n<1w,k%n*10+1<10w,所以用k=k%n*10+1能保证k永远在int的范围内,同时k%n==所枚举的那个全由1组成的数%n。