poj 3720 Occurrence of Digits

2015-01-27 09:57:28 · 作者: · 浏览: 8

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 
  
   
#include 
   
     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<