2011年5月7日 星期六

d051: 糟糕,我發燒了!

內容 :
    珊珊在美國讀書,有一天覺得昏沉沉的全身不舒服,心想自己是不是發燒了。到藥局買了一支體溫計量了一下體溫,發現她的體溫是華氏 104 度。習慣了台灣的攝氏,她一時還不知道自己的體溫到底有多燒。你能不能幫她寫個程式,把華氏的溫度轉成攝氏的溫度。

輸入說明 :
    輸入僅有一行,含有一個整數 f (-460 ≤ f ≤ 2147483647),代表華氏溫度。

輸出說明 :
    輸出計算所得的攝氐溫度,精確到小數點以下三位。

範例輸入 :
104

範例輸出 :
40.000

程式碼 :
#include <stdio.h>

int main()
{
    int f;
    
    while(scanf(" %d",&f)==1)
        printf("%.3f\n",(float)(f-32)*5/9);
   
    return 0;
}


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

d050: 妳那裡現在幾點了?

內容 :
    珊珊到了美國猶他州的楊百翰大學之後,文文禁不住對她的思念,常常想打電話給她,卻又擔心在美國的她是不是在睡覺。好不容易鼓起勇氣打通了電話,第一句就先問:「妳那裡現在幾點了?」請你幫文文寫一個程式,輸入台灣時間後,算出美國山區時間。

輸入說明 :
    輸入僅有一行,其中含有一個整數 h (0 ≤ h ≤ 23),代表台灣時間現在幾點 (24 小時制)。因為美國時間的分與台灣時間的分相同,因此幾分就不用輸入計算了。

輸出說明 :
    輸出美國山區時間 (24 小時制)。台灣的時間比美國山區時間快 15 小時 (不考慮日光節約時間)。

範例輸入 :
21

範例輸出 :
6

程式碼 :
#include <stdio.h>

int main()
{
    int i;
    while(scanf("%d",&i)==1)
        printf("%d\n",i>14?(i-15):(i+9));
    return 0;
}


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

d049: 中華民國萬歲!

內容 :
    國父孫中山於 1911 年武昌起義推翻滿清創立中華民國,並訂次年 (1912) 年為中華民國元年。從此國民政府便以中華民國國號記年至今。請寫一程式,將輸入的西元年份轉換成民國年份後輸出。

輸入說明 :
    輸入僅有一行,其中包含一個西元年份 y (1912 ≤ y ≤ 2147483647)。

輸出說明 :
    輸出所算出的民國年份。

範例輸入 :
2008

範例輸出 :
97

程式碼:
#include <stdio.h>

int main()
{
    int year;
    
    while(scanf("%d",&year)==1)
        printf("%d\n",year-1911);
    return 0;
}



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

2011年5月1日 星期日

d018: 字串讀取練習

內容 :
    練習字串的分析與處理

輸入說明 :
    一個字串,內部包含數組資料,每組資料有一個序號,及一個實數。
    格式如下: 序號:實數
    請注意,序號有可能跳號

輸出說明 :
    請求出所有序號為奇數的實數的和減掉所有序號為偶數的實數,並印出結果。

範例輸入 :
1:12.5 2:12 3:13.1 4:13.0
1:1.2 3:2.3

範例輸出 :
0.6
3.5

程式碼 :
#include <stdio.h>

int main()
{
    int n;
    float f,total=0.0;
    char nouse;
    
    while(scanf("%d%c%f%c",&n,&nouse,&f,&nouse)==4)
    {
        if(n%2 == 0)
            total = total - f;
        else
            total = total + f;
        if(nouse == '\n')
        {
            printf("%g\n",total);
            total = 0.0;
        }
    }
    return 0;
}



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

d010: 盈數、虧數和完全數

內容 :
    對一個正整數 N 而言,將它除了本身以外所有的因數加起來的總和為 S,如果 S>N,則 N 為盈數,如果 S<N,則 N 為虧數,而如果 S=N,則 N 為完全數(Perfect Number)。例如 10 的因數有 1、2、5、10,1+2+5=8<10,因此10 為虧數,而 12 的因數有 1、2、3、4、6、12,1+2+3+4+6=16>12,因此 12 為盈數。至於 6 的因數有 1、2、3、6,1+2+3=6,所以 6 是完全數(它也是第一個完全數)。
    現在請你寫一個程式,輸入一個正整數 N,然後印出它是盈數、虧數還是完全數。

輸入說明 :
none

輸出說明 :
none

範例輸入 :
30
26
28

範例輸出 :
盈數
虧數
完全數

程式碼 :
#include <stdio.h>
#include <math.h>
int main()
{
    int i,n,total,temp;
    
    while(scanf("%d",&n)==1)
    {
        
        temp = sqrt(n) + 1;
        total = 1;
        for(i=2; i<temp; i++)
            if(n%i==0)
                if(i*i == n)
                    total = total + i;
                else
                    total = total + i + n/i;
        if(total > n)
            printf("盈數\n");
        else if(total == n)
            printf("完全數\n");
        else
            printf("虧數\n");
    }
    return 0;
}




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