【POJ3696】The Luckiest Number-欧拉定理+快速幂
测试地址: The Luckiest Number 题目大意: 给出一个正整数 L ( ≤ 2 , 000 , 000 , 000 ) //--> ,要使正整数 888...8 K 位 //--> 能整除 L //--> ,求最小的 K //--> ,如果不存在这样的 K //--> 则输出0。 做法: 这题的思路很神……没看题解的时候根本不知道怎么做,调也调了好一会,我好弱啊…… 这一题需要使用欧拉定理+快速幂来解决。 我们发现 999...9 K 位 //--> 可以表示为 10 K − 1 //--> ,所以 888...8 K 位 //--> 可以表示为 8 / 9 × ( 10 K − 1 ) //--> ,那么存在一个整数 p //--> 使得 8 / 9 × ( 10 K − 1 ) = L × p //--> ,所以 10 K − 1 = 9 / 8 × L × p //--> 。由于等式右边要是整数,那么 p //--> 应该满足 8 | ( L × p ) //--> 。因为 L //--> 已经包含 gcd ( L , 8 ) //--> 这些因子,所以 p //--> 需要包含 8 / gcd ( L , 8 ) //--> 这些因子,所以可以将 p //--> 写成