NYOJ 一个简单的数学题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/AYZXX/article/details/71583619



一个简单的数学题

时间限制: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
来源
hdu
上传者


思路:其实这个题很简单,标记余数就可以了,我之前理解一直有误,一直错,很崩溃,后来发现其实很容易;



#include<stdio.h>
#include<string.h>
int a[110000];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        memset(a,0,sizeof(a));
        int n,m=1;
        a[1]=1;
        scanf("%d",&n);
        if(n<0)
        {printf("-");n=-n; }
            if(n==1)
                printf("1\n");
            else
            {
               printf("0.");
                while(1)
                {
                    m=m*10;
                    printf("%d",m/n);
                    m=m%n;
                    if(m==0||a[m])
                        break;
                    a[m]=1;       //标记余数
                }
                printf("\n");
            }
    }
    return 0;
}


展开阅读全文

没有更多推荐了,返回首页