hihocoder-1720-小数数字
#1720 : 小数数字
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
给定一个真分数P/Q(P < Q),请你求出它的小数部分都包括0~9中的哪些数字。
例如1/2=0.5,只包含数字5;1/3=0.33333……,只包含数字3,1/7=0.142857142857……,包含数字124578。
输入
两个整数P和Q,1 ≤ P < Q ≤ 1000000
输出
从小到大输出小数部分出现的所有数字
-
样例输入
-
13 123
样例输出
-
01569
记录出现的余数,一旦出现之前出现过的,说明陷入了循环了。而两个整数的比值一定是有理数。一定能除尽或者找到循环节。
#include <cstdio>
#include <cstring>
#include <cstdlib>
const int MAXN = 1000000 + 10;
int P, Q, vis[MAXN], get[10];
int main()
{
int tmp1, tmp2;
while( scanf("%d %d", &P, &Q) != EOF)
{
memset(vis, 0, sizeof(vis));
memset(get, 0, sizeof(get));
while(P){
tmp1 = P*10 / Q;
get[ tmp1 ] = 1;
P = P*10 % Q;
if( vis[P] ){
break;
}else{
vis[P] = 1;
}
}
for(int i=0; i<10; ++i){
if( get[i] ){
printf("%d", i);
}
}
printf("\n");
}
return 0;
}