ACM之一个简单的数学问题

一个简单的数学题

时间限制: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;  

原文地址:https://www.cnblogs.com/linruier/p/8543285.html