龙卷风摧毁停车场
//这道题还是比较好做吧, 就直接模拟求余数的方法, 用一个数组余数是否出现过, 并判断是否在某一个阶段余数是否为0,如果余数为0或余数出现过,说明是已经除完或第二次循环的开始,在此处跳出循环即可
AC Code
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
bool vis[maxn];
int main()
{
int n;
/* freopen("in.in","r",stdin);
freopen("out.out","w",stdout);*/
while(scanf("%d",&n)!=EOF){
memset(vis,false,sizeof(vis));
if(n<0){
printf("-");
n = -n;
}
if( n == 1 ){
printf("1\n");
continue;
}
int flag=0;
int tmp=1;
while(1){
printf("%d",tmp/n);
if(!flag){
printf(".");
flag |= 1;
}
int k = tmp%n;
if(k == 0 || vis[k]) break;
vis[k]=true;
tmp = k*10;
}
printf("\n");
}
}