[題目描述]
傳送門
[題目分析]
就是一個模擬,不過稍微有點小復雜,而且輸出格式有點小毒瘤.
不過只是RE了兩發,PE了一發就過了,還是很開心.
需要注意數組要開很大,可能循環節出現在很后.
每個輸出樣例應該輸出一個空行,最后面也應該有,不然會PE
[AC代碼]
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<climits>
#include<cctype>
#include<queue>
#include<set>using namespace std;typedef long long ll;
const int INF=0x3f3f3f3f;
const int MAXN=1e5+5;int x,y,z;
int ans[MAXN];
int num[MAXN];
//bool first=true;int main()
{while(~scanf("%d%d",&x,&y)){memset(ans,0,sizeof(ans));memset(num,0,sizeof(num));z=x;ans[0]=x/y; x%=y; x*=10;for(int i=1;i;i++){bool flag=false; int idx=0;for(int j=1;j<i;j++){if(num[j]==x){flag=true;idx=j;break;}}if(flag){printf("%d/%d = %d.",z,y,ans[0]);for(int j=1;j<idx;j++) printf("%d",ans[j]);printf("(");if(i-idx<=50){for(int j=idx;j<i;j++) printf("%d",ans[j]);printf(")\n");}else{for(int j=idx,k=1;k<=50;k++,j++){printf("%d",ans[j]);}printf("...)\n");}printf(" %d = number of digits in repeating cycle\n\n",i-idx);break;}num[i]=x;ans[i]=x/y;x%=y; x*=10;}}return 0;
}