HDU 2552 A simple problem

题意: Zty很痴迷数学问题.。一天,yifenfei出了个数学题想难倒他,让他回答1 / n。但Zty却回答不了^_^. 请大家编程帮助他.

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

分析: 找循环节的时候看看是否出现了相同的被除数即可。

#include <stdio.h>
#include <string.h>
#define maxn 100010
#define clr(x) memset(x,0,sizeof(x))
int res[maxn];
int vis[maxn];
int main()
{
    int top, i;
    int k, t, n;
    scanf("%d",&t);
    while (t--)
    {
        scanf("%d",&n);
        
        if (n < 0)
        {
            putchar('-');
            n = -n;
        }
       
        if (n == 1) 
        {
            printf("1\n");
            continue;
        }
        k = 1;
        top = 0;
        clr(vis);
        vis[1] = 1;

        while (k)
        {
            k *= 10;
            res[top++] = k/n;
            k %= n;
            if (vis[k])
                break;
            vis[k] = 1;
        }
        
        if (top)
        {
            printf("0.");
            for (i=0; i<top; i++)
                printf("%d",res[i]);
            putchar('\n');
        }
    }
    return 0;
}

 

posted @ 2012-11-03 14:00  'wind  阅读(294)  评论(0编辑  收藏  举报