2011年9月25日 星期日

a240: 第一題:1 / 17 小數第 n 位

內容 :
    請寫一個程式,輸入正整數n求若將 1 / 17 化為小數﹐則小數點後第n位數字為多少?及小數點後第1位至第n位的數字和為多少?

輸入說明 :
    有m(1≤m≤5)組測試資料且1≤n≤170000,每組測試資料均為一行
接下來共有m行,每行有1個整數。

輸出說明 :
    對於每一組測試資料,輸出一行2個數字(空格隔開),代表著這個第n位數字及小數點後第1位至第n位的其數字和。

範例輸入 :
2
3
5

範例輸出 :
8 13
2 23

出處 :
板橋高中2011能力競賽

程式碼:
#include<stdio.h>

int main()
{
    int i,m,n,dividend;
    int arr[170001]={0};
    
    dividend = 1;
    for(i=1; i<170001; i++)
    {
        dividend *= 10;
        arr[i] = arr[i-1] + dividend/17;
        dividend %= 17;
    }    
    
    scanf("%d",&m);
    for(i=0; i<m; i++)
    {
        scanf("%d",&n);
        printf("%d %d\n",arr[n]-arr[n-1],arr[n]);
    }
    return 0;
}



http://zerojudge.tw/ShowProblem?problemid=a240




2 則留言:

  1. 不好意思,能夠請您講解一下這段
    dividend = 1;
    for(i=1; i<170001; i++)
    {
    dividend *= 10;
    arr[i] = arr[i-1] + dividend/17;
    dividend %= 17;
    }
    程式碼嗎?

    回覆刪除
  2. 喔!
    我看懂了,這個真是厲害......

    看了您的網誌後我一天比一天進步呢!

    真是非常感謝!

    回覆刪除