N分之一 豎式除法模擬

N分之一

Description


Alice越來越癡迷於數學問題了。一天,爸爸出了個數學題想難倒她,讓她求1 / n。

可憐的Alice只有一歲零九個月,回答不上來 ~~~~(>_<)~~~~  於是她求你編個程序幫她算出來。

Input

第一行是一個整數T,表示測試組數。接下來T行,每行一個整數 n ( 1 ≤ |n| ≤ 105 )。

Output

以實數形式輸出1/n 。如果是無限循環小數的,只需輸出第一個循環節。

Sample Input

4
2
3
7
168

Sample Output

0.5
0.3
0.142857
0.005952380

注意一點 如果被除數在之前出現過的話 那麼接下來出現的就是循環節

#include<bits/stdc++.h>
int main()
{
    int n;
    bool vis[100000];
    int t;
    scanf("%d", &t);
    while(t--)
    {
        scanf("%d", &n);
        if(n == 1)
        {
            printf("1\n");
            continue;
        }
        else if(n == -1)
        {
            printf("-1\n");
            continue;
        }

        memset(vis,0,sizeof(vis));
        if(n < 0)
        {

            n = -n;
            printf("-");
        }


            printf("0.");

        int x,k =1;
        int ans[10000];
        int cnt = 0;
        vis[k] = 1;
        while(k)
        {
            k *= 10;
            ans[cnt++] = k/n;
            k %= n;
            //printf("---------%d\n",k);
            if(vis[k])
            {
                break;
            }
            vis[k] = true;
        }
        for(int i = 0; i < cnt; i++)
            printf("%d", ans[i]);
        printf("\n");
        //printf("%d\n",k);

    }
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章