Headstrong Student
.
.
水题,对于一个分数,要求求出其循环节的长度以及小数点后到循环节有多少位小数。因为数比较小,直接记忆化余数出现的位置就好了。
.
.
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=1e6+10;
int vis[maxn];
int main()
{
freopen("b.in","r",stdin);
freopen("b.out","w",stdout);
int x,y,n=1,t;
scanf("%d%d",&x,&y);
x=x%y;
if(x==0)
{
puts("0 0");
return 0;
}
vis[x]=1;
bool ok=0;
while (x!=0)
{
x=10*x;t=x/y;
x-=t*y;
++n;
//printf("%d %d\n",n,x);
if (vis[x]>0)
{
ok=1;
printf("%d %d\n",vis[x]-1,n-vis[x]);
break;
} else vis[x]=n;
}
if (!ok) printf("%d 0\n",n-1);
return 0;
}