输出1/n(是循环小数的,只输出第一个循环节)
Input
第一行整数T,表示测试组数。后面T行,每行一个整数 n (1<=|n|<=10^5).
Output
输出1/n. (是循环小数的,只输出第一个循环节).
Sample Input
4
2
3
7
168
Sample Output
0.5
0.3
0.142857
0.005952380
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a;
scanf("%d",&a);
while(a--){
int n,m=1,k,digit[100010],vis[100010];
scanf("%d",&n);
if(n<0){
printf("-");
n=-n;
}
memset(vis,0,sizeof(vis));
k=m%n;
int cnt=0;
vis[k]=1;
if(m%n==0){
printf("%d",m/n);
}
else{
printf("0.");
}
while(k){
k*=10;
digit[cnt++]=k/n;
k%=n;
if(vis[k]==1)break;
vis[k]=1;
}
int i;
for(i=0;i<cnt;i++){
printf("%d",digit[i]);
}
printf("\n");
}
return 0;
}