Student"/>
Headstrong Student
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;
}
更多推荐
Headstrong Student
发布评论