现在的位置: 首页 > 综合 > 正文

hdu2522A simple problem (求1/n的值,有循环结,输出循环结前面部分)

2018年02月22日 ⁄ 综合 ⁄ 共 722字 ⁄ 字号 评论关闭
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");
    }
}

抱歉!评论已关闭.