poj 2251(同余)

Ones
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 11461   Accepted: 6488

Description

Given any integer 0 <= n <= 10000 not divisible by 2 or 5, some multiple of n is a number which in decimal notation is a sequence of 1's. How many digits are in the smallest such a multiple of n?

Input

Each line contains a number n.

Output

Output the number of digits.

Sample Input

3 
7 
9901

Sample Output

3
6
12

题意:一个数不能被2或者5整除,问这个数被 11111....整除最小的1111....的位数是多少?
题解:利用同余就OK了,(x1+x2+x3...+xn)%n = (x1)%n+(x2)%n+...+(xn)%n
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
#include <stdlib.h>
using namespace std;

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        int len = 1,sum=0;
        while(1){
            sum = (sum*10+1)%n;
            if(sum==0) break;
            len++;
        }
        printf("%d\n",len);
    }
}

 

posted @ 2016-08-06 10:23  樱花庄的龙之介大人  阅读(162)  评论(0编辑  收藏  举报