Occurrence of Digits
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 3680 | Accepted: 1523 |
Description
Every fraction can be converted to a repeatin decimal. For example 1/2 = .5, 1/3 = .(3) and 1/6 = .1(6). Given an integer n, Tom wants to know how many digit k occurs totally in the repeating decimal presentation of 1/2, 1/3 ... 1/n.
Input
The input consists of several test cases. Each test case is a line containing two integers n (2 ≤ n ≤ 100) and k (0 ≤ k ≤ 9).
Output
Output the total occurrence of the digit.
Sample Input
3 5 7 3 7 0
Sample Output
1 1 0
题意:求1/2到1/n之间是循环小数表示用了哪些数字;
#include <iostream>
#include <string.h>
using namespace std;
int num[102][10];
int repeat[102];
int main(){
int n,k;
memset(num,0,sizeof(num));
for (int i=2;i<101;i++){
memset(repeat,-1,sizeof(repeat));
int j=1;
repeat[j]=0;
int t=1;
while (1){
j*=10;
num[i][j/i]++;
j%=i;
if (repeat[j]!=-1||j==0)
break;
repeat[j]=t++;
}
}
while (cin>>n>>k){
int ans = 0;
for (int i = 2; i <= n; i++)
ans += num[i][k];
cout<<ans<<endl;
}
return 0;
}