1的个数

来源:互联网 发布:西门子plc简单编程实例 编辑:程序博客网 时间:2024/06/07 13:30

题目描述

对于一个给定的[0,10000]内的不能被2或5整除的整数n,n放大某些倍数后,结果会是仅由很多1组成的一个数a。现在请你找出最小的那个a中包含的1的个数。

输入

输入包含多组测试数据。每组输入为一个整数n(0<=n<=10000)。

输出

对于每组输入,输出最小的那个a中包含的1的个数。

样例输入

379901

样例输出

3612


代码

#include <iostream>#include <cstdio>#include <cmath>using namespace std;int main(){    int n;    while(scanf("%d",&n)!=EOF){        if(n == 0) {printf("0\n");continue;}        int ans = 1;        int k = 1;        while(k < n){///因为是n的倍数,所以求出小于n的含1的个数            k = k*10+1;            ans++;        }        while(k%n){            k = k%n*10+1;/// k*10+1  = k%n*10+1            ans++;        }        printf("%d\n",ans);    }    return 0;}

1 0