一个简单的数学题

时间限制:3000 ms  |  内存限制:65535 KB

难度:3

描述

zyc最近迷上了数学,一天,dj想出了一道数学题来难住他。算出1/n,但zyc一时答不上来希望大家能编程帮助他。

输入

第一行整数T,表示测试组数。后面T行,每行一个整数 n (1<=|n|<=10^5).

输出

输出1/n. (是循环小数的,只输出第一个循环节).

样例输入

4

2

3

7

168

样例输出

0.5

0.3

0.142857

0.005952380

程序源代码:

#include<iostream>

using namespace std;

int main()

{

int n, t, rest;

cin>>n;

int mark[100001];

while(n--)

{

for(int i=0;i<100001;i++)mark[i]=0;

cin>>t;

if(t == 1)

{

cout<<1<<endl;

}

else

{

cout<<"0.";

rest = 1;

//下面的过程是手工模拟除法运算,当余数rest出现过则退出while循环

while(rest != 0 && !mark[rest])

{

mark[rest] = 1;         //循环标记

cout<<rest*10/t;

rest = (rest*10)%t;

}

cout<<endl;

}

}

return 0;

}

05-18 15:38