广陵兄,任何事情要认真分析以后才下结论。这道题其实很简单的。
根据LZ的叙述,我们可以得出式子,其中n是m的位数。m是所求的数字。
p*10^n+m
---------=q
m*10+p
这个式子,p,q已知,n可以根据m算出来。似乎已经解决了:枚举m即可。但是从飞燕的结果来看,枚举m显然是不行的。因为位数太多。这时我们可以反其道而求之。我们先假设n已知,把m解出来:
p*10^n+m=10qm+pq
p*10^n=(10q-1)m+qp
m=(10^n-q)p/(10q-1)
这样,我们直接枚举n,然后就可以针对每个n求出一个m。但是除法不一定是整除。那么问题转变为:求最小的n,使上式得出的m为整数。同时m的位数为n。
枚举n的话,问题的复杂度就可以大大降低了。
这道题还需要大数运算的知识,大数除法,整除判断等我还没做过。查完了资料再来看这道题。
根据LZ的叙述,我们可以得出式子,其中n是m的位数。m是所求的数字。
p*10^n+m
---------=q
m*10+p
这个式子,p,q已知,n可以根据m算出来。似乎已经解决了:枚举m即可。但是从飞燕的结果来看,枚举m显然是不行的。因为位数太多。这时我们可以反其道而求之。我们先假设n已知,把m解出来:
p*10^n+m=10qm+pq
p*10^n=(10q-1)m+qp
m=(10^n-q)p/(10q-1)
这样,我们直接枚举n,然后就可以针对每个n求出一个m。但是除法不一定是整除。那么问题转变为:求最小的n,使上式得出的m为整数。同时m的位数为n。
枚举n的话,问题的复杂度就可以大大降低了。
这道题还需要大数运算的知识,大数除法,整除判断等我还没做过。查完了资料再来看这道题。