Problem Description
Zty很痴迷数学问题.。一天,yifenfei出了个数学题想难倒他,让他回答1 / n。但Zty却回答不了^_^. 请大家编程帮助他.
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> struct nnn { int w,mod; }s[100000]; int n,sn; int MOD(int mod) { mod=(mod*10)%n; return mod; } int find(int mod,int w) { for(int i=0;i<sn;i++) if(mod==s[i].mod&&w==s[i].w) return 1; return 0; } int main() { int t,k,mod,md,sf,tm; scanf("%d",&t); while(t--) { scanf("%d",&n); mod=1;sf=0; sn=0; if(n<0)sf=1,n=-n; s[sn].w=(mod*10)/n; s[sn++].mod=mod=MOD(mod); while(mod) { tm=mod; s[sn].mod=mod=MOD(mod); s[sn].w=(tm*10)/n; if(find(mod,(tm*10)/n)) break; sn++; } if(sf) printf("-"); printf("0."); for(int i=0;i<sn;i++) printf("%d",s[i]); printf("\n"); } }