1 条题解
-
0
题目分析
我们需要找到一个由全1组成的数字(如1, 11, 111,...),使其是给定整数的倍数。题目要求输出这个最小全1数字的位数。
解题思路
-
数学转换:
- 全1数字可以表示为,其中是位数。
- 我们需要找到最小的,使得。
- 这等价于。
-
模运算优化:
- 直接计算会很大,我们利用模运算性质:$(a \cdot b) \mod n = [(a \mod n) \cdot (b \mod n)] \mod n$。
- 通过迭代计算,直到结果为1。
代码
#include <iostream> using namespace std; int main() { int n; while(cin>>n) { int js=1; int tmp=1; while(tmp!=0) { tmp=tmp*10+1; tmp=tmp%n; js++; } cout<<js<<endl; } return 0; }
-
- 1
信息
- ID
- 1552
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者