原题链接
这道题不能用暴力算法啦,要用模拟除法。
以原题为例,你在纸上写上一长串的1,比如11111111111111111。这总共是17个1,下面列竖式去除31。你会发现当除到第15个1的时候31整除了这个数,所以我们的答案就是15个1。这样子可以极大的减少时间复杂度。
代码如下:
#include <stdio.h>
int main(){
long long t=1,n;
int i=1;
scanf("%lld",&n);
while(t<n){
t=t*10+1;
i++;
}
while(1){
printf("%d",t/n);
t=t%n;
if(t==0){
break;
}else{
t=t*10+1;
}
i++;
}
printf(" %d",i);
}