N分之一
Alice越來越癡迷於數學問題了。一天,爸爸出了個數學題想難倒她,讓她求1 / n。
可憐的Alice只有一歲零九個月,回答不上來 ~~~~(>_<)~~~~ 於是她求你編個程序幫她算出來。
第一行是一個整數T,表示測試組數。接下來T行,每行一個整數 n ( 1 ≤ |n| ≤ 105 )。
以實數形式輸出1/n 。如果是無限循環小數的,只需輸出第一個循環節。
4
2
3
7
168
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);
}
}