POJ 2551 ONES

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:06   696   0

就是给出一个数,然后求能被这个数整除的全部为1的数最小有多少位。

如果直接算肯定会数据溢出导致TLE的。

其实根据(a+b)%d=(a%d+b%d)%d就可以做出来了。

以7为例

1%7=1 1%7=1

11%7=4 (10%7+1)%7=4

111%7=6 (4*10%7+1)%7=6

1111%7=5 (6*10%7+1)%7=5

11111%7=2 (5*10%7+1)%7=2

111111%7=0 (2*10%7+1)%7=0

输出6.

#include <cstdio>
using namespace std;
int main(){
 int n;
 while(scanf("%d",&n)!=EOF){
  int a=0,res=0;
  do{
   res++;
   a=a*10%n+1;
   a%=n; 
  }while(a!=0);
  printf("%d\n",res);
 }
 return 0;
}


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP