N分之一
Description
Alice越来越痴迷于数学问题了。一天,爸爸出了个数学题想难倒她,让她求1 / n。
可怜的Alice只有一岁零九个月,回答不上来 ~~~~(>_<)~~~~ 于是她求你编个程序帮她算出来。
Input
第一行是一个整数T,表示测试组数。接下来T行,每行一个整数 n ( 1 ≤ |n| ≤ 105 )。
Output
以实数形式输出1/n 。如果是无限循环小数的,只需输出第一个循环节。
Sample Input
4
2
3
7
168
Sample Output
0.5
0.3
0.142857
0.005952380
注意一点 如果被除数在之前出现过的话 那么接下来出现的就是循环节
#include<bits/stdc++.h>
int main()
{
int n;
bool vis[100000];
int t;
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
if(n == 1)
{
printf("1\n");
continue;
}
else if(n == -1)
{
printf("-1\n");
continue;
}
memset(vis,0,sizeof(vis));
if(n < 0)
{
n = -n;
printf("-");
}
printf("0.");
int x,k =1;
int ans[10000];
int cnt = 0;
vis[k] = 1;
while(k)
{
k *= 10;
ans[cnt++] = k/n;
k %= n;
//printf("---------%d\n",k);
if(vis[k])
{
break;
}
vis[k] = true;
}
for(int i = 0; i < cnt; i++)
printf("%d", ans[i]);
printf("\n");
//printf("%d\n",k);
}
}