POJ PKU 3720 除法模拟
(2010-04-30 07:43:10)
标签:
pojpku3720it |
分类: 杂题 |
题目描述:
给你一个n和k,在2~100之间,k在0 ~ 9之间,求1/2 ..... 1/n的小数(或者无限循环)中,k数字出现的次数。
解题报告:
纯粹模拟即可:
模拟99次除法,把每次的无限循环小数出现的次数存入ans[i][j]里
表示1 / i的小数中,数字j出现的次数。
那么答案就是
sigma(ans[i][k])
下面说一下怎样求每个的答案。
以7为例:
now表示当前的被除数。初始时一定是10.
10 / 7 = 1
30 / 7 =
20 / 7 =
60 / 7 =
40 / 7 =
50 / 7 =
注意,10已经在第一行出现过了,所以在此开始循环,所以
1/7 = 0.142857
代码很短,如下:
#include<iostream>
using namespace std;
int n, k, ans[101][10];
bool vst[10000];
void jeogia(int n)
{
}
int main()
{
}