2011年5月21日 星期六

d070: 文文的求婚--續集 (0 尾版)

內容 :
    承 a004,珊珊終於學成歸國了,文文的考驗時刻也到了。走出了迎客大廳,珊珊問:「What type of year was I born in?」文文很有自信的回答:「閏年!」可是珊珊卻說:「No, It was a LEAP YEAR!」看來文文要娶到珊珊,還得先把英文練一練。

輸入說明 :
    輸入的每一行有一個正整數 y,代表珊珊生日的西元年份。輸入的最後一行有一個 0,代表輸入的結束,這個數字請勿做任何處理。

輸出說明 :
    對於所輸入的每個 y,要各別輸出一行。若 y 是閏年,請於該行輸出「a leap year」,否則請輸出「a normal year」。

範例輸入 :
1992
1993
1900
2000
0

範例輸出 :
a leap year
a normal year
a normal year
a leap year

提示 :
    背景知識: while 迴圈
    西元年被4整除且不被100整除,或被400整除者即為閏年。

程式碼 :
#include<stdio.h>
int main() 
{
    int y;
        
    while(scanf("%d",&y)==1)
    {
        if(y==0)
            break;
        if(y%400==0 || (y%100!=0 && y%4==0))
            printf("a leap year\n");
        else
            printf("a normal year\n");
    }    
    return 0;
}



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

d069: 文文的求婚--續集 (n 行版)

內容 :
    承 a004,珊珊終於學成歸國了,文文的考驗時刻也到了。走出了迎客大廳,珊珊問:「What type of year was I born in?」文文很有自信的回答:「閏年!」可是珊珊卻說:「No, It was a LEAP YEAR!」看來文文要娶到珊珊,還得先把英文練一練。

輸入說明 :
    輸入的第一行有一個整數 n。接下來的 n 行每行有一個正整數 y,代表珊珊生日的西元年份。

輸出說明 :
    對於所輸入的每個 y,要各別輸出一行。若 y 是閏年,請於該行輸出「a leap year」,否則請輸出「a normal year」。

範例輸入 :
4
1992
1993
1900
2000

範例輸出 :
a leap year
a normal year
a normal year
a leap year

提示 :
    背景知識: while 迴圈
    西元年被4整除且不被100整除,或被400整除者即為閏年。

程式碼 :
#include<stdio.h>
int main() 
{
    int i,n,y;
        
    scanf(" %d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&y);
        if(y%400==0 || (y%100!=0 && y%4==0))
            printf("a leap year\n");
        else
            printf("a normal year\n");
    }    
    return 0;
}

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

d068: 該減肥了!

內容 :
    珊珊開了一家體重管理中心。每當有新顧客上門,她就為她量體重。如果體重大於 50 公斤,她就免費送她一堂可以減一公斤的體驗課程。給你新顧客的體重,請輸出她離開中心時的體重。

輸入說明 :
    輸入只有一行,其中含有一個正整數 w,代表新顧客進門的體重。

輸出說明 :
    請輸出該顧客離開時的體重。

範例輸入 :
60

範例輸出 :
59

提示 :
    背景知識: 算術、比較運算子
    你能只用算術、比較運算子而不用 if 解出這題嗎?

程式碼 :
#include <stdio.h>

int main()
{
    int w;
    
    while(scanf(" %d",&w)==1)
        printf("%d\n",w>50?(w-1):w);
   
    return 0;
}



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

d067: 文文的求婚--續集 (1 行版)

內容 :
    承 a004,珊珊終於學成歸國了,文文的考驗時刻也到了。走出了迎客大廳,珊珊問:「What type of the year was I born in?」文文很有自信的回答:「閏年!」可是珊珊卻說:「No, It was a LEAP YEAR!」看來文文要娶到珊珊,還得先把英文練一練。

輸入說明 :
    輸入只有一行,其中含有一個正整數 y,代表珊珊生日的西元年份。

輸出說明 :
    若 y 是閏年,請輸出「a leap year」,否則請輸出「a normal year」

範例輸入 :
1992

範例輸出 :
a leap year

提示 :
    背景知識: if 陳述式
    西元年被4整除且不被100整除,或被400整除者即為閏年

程式碼 :
#include<stdio.h>
int main() 
{
    int y;
        
    while(scanf(" %d",&y)==1)
    {
        if(y%400==0 || (y%100!=0 && y%4==0))
            printf("a leap year\n");
        else
            printf("a normal year\n");
    }        
    return 0;
}


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

2011年5月20日 星期五

d066: 上學去吧!

內容 :
    板橋高中規定同學必須在 7:30 以前到校早自習,最後一堂課則在 17:00 下課。給你現在的時間,請判斷現在是上學時間或放學時間。

輸入說明 :
    輸入只有一行,其中含有兩個由空隔開的整數 hh 及 mm,hh:mm 則代表現在的時間 (24小時制)。

輸出說明 :
    如果現在是上學時間,請輸出「At School」,否則請輸出「Off School」

範例輸入 :
17 00

範例輸出 :
Off School

提示 :
    背景知識: if 算數、關係、邏輯運算子

程式碼 :
#include <stdio.h>

int main()
{
    int h,m,mm;
        
    while(scanf("%d%d",&h,&m)==2)
    {
        mm = h*60 + m; 
        if(mm>449 && mm<1020)
            printf("At School\n");
        else
            printf("Off School\n");
    }
    return 0;
}



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

d065: 三人行必有我師

內容 :
    文文和兩個同學最近喜歡在 ZeroJudge 上解題。有一天他們看到了孔子說的:「三人行必有我師焉。」就吵了起來,因為他們每個人都認為自己是三個人之中的「老師」。後來他們決定要比比看誰在 ZeroJudge 上的 AC 題數最多。

輸入說明 :
    輸入只有一行,含有三個由空白所隔開的非負整數。

輸出說明 :
    輸出這三個整數中最大的那一個。

範例輸入 :
35 26 48

範例輸出 :
48

程式碼 :
#include <stdio.h>

int main()
{
    int b,c,max;
    
    while(scanf(" %d %d %d",&max,&b,&c)==3)
    {
        if(max < b)
            max = b;
        if(max < c)
            max = c;
        printf("%d\n",max);
    }   
    return 0;
}



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

d064: ㄑㄧˊ 數?

內容 :
    英文的 Odd 是「奇怪」的意思,Odd Number 當然就是「奇怪的數字」簡稱「奇數」。問題是「奇數」倒底是唸成「ㄐㄧ數」或是「ㄑㄧˊ 數」呢?

輸入說明 :
    輸入只有一行,其中含有一個整數 i。

輸出說明 :
    如果 i 是奇數,輸出 Odd;
    如果 i 是偶數,則輸出 Even。

範例輸入 :
1

範例輸出 :
Odd

程式碼 :
#include <stdio.h>
int main()
{
    int i;
        
    while(scanf(" %d",&i)==1)
    {
        if(i%2==0)
            printf("Even\n");
        else
            printf("Odd\n");
    }        
    return 0;
}



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

2011年5月18日 星期三

突然重新開機,VM打不開???

今天開著VM用電腦,結果突然當機,重新開機後想繼續用VM,結果開不起來,它和我說
"This virtual machine appears to be in use. If this virtual machine is already in use, press the "cancel" button to avoid damaging it. If this virtual machine is not in use , press the "Take Ownership" button to obtain ownership of it"
configuration file D:\Virtual Machines\Windows XP Professional\windows XP Professional.vmx


明明就沒開阿,哪ㄟ阿ㄋㄟ
不明原因,後來上網找終於找到解決方法

If your virtual machine in not in the Powered-on list, then:
(如果你的虛擬機器不再開啟清單裡面)
- turn off VMWare,
(關掉VM)
- open the folder D:\Virtual Machines\Windows XP Professional\
(打開VM所在的資料夾)
- and delete the files *.lck
(殺掉附檔名是lck的檔案)

之後就重新開啟....成功



http://www.vmwareforum.org/cgi-bin/yabb2/YaBB.pl?num=1221239858

2011年5月16日 星期一

不會的問題問別人前,先自己google吧!

有時有人會問一些問題,但那些問題是搜尋可以搜到的,為了讓他們學會搜尋,我們可以用下面的網址教他們搜尋,如何下關鍵字,google會用動畫交你喔!

網址:http://www.lmgtfy.com/

2011年5月11日 星期三

d063: 0 與 1

內容 :
    文文上了他的第一堂電腦概論,老師說電腦內部是由很多的小開關來組成:1 代表開、0 代表關。於是聰明的文文便了解了,原來我們平常使用電燈開關就是把 1 變成 0、0 變成 1 嘛!

輸入說明 :
    輸入只有一行,含有一個為 0 或 1 的整數。

輸出說明 :
    輸入為 0 則輸出 1;輸入為 1 則輸出 0。

範例輸入 :
1

範例輸出 :
0

提示 :
    運算子
    你能不用 if 指令,只用算術或關係運算子做出這題嗎?

程式碼1 :
#include <stdio.h>

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

程式碼2 :
#include <stdio.h>

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




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

d060: 還要等多久啊?

內容 :
    文文又想打電話給珊珊,可是這次他碰到了另一個問題。珊珊說他們學校每堂課 50 分鐘,下課的時間都是整點過後 25 分,休息 10 鐘後再上下一節課。文文不想打擾珊珊上課,也不想才剛打通電話她就要上課去了,因此他決定一定要在剛好 25 分的時候打電話給她。給你現在的時間的分,請你幫他算算看還要等多久才能打電話給珊珊?

輸入說明 :
    輸入只有一行,包含現在時間的分 m (0 ≤ m ≤ 59)。

輸出說明 :
    輸出還要等幾分鐘文文才能打電話。

範例輸入 :
20

範例輸出 :
5

提示 :
    算術運算子
    你能只用算術運算子來求出解答,而不需要用到 if 指令嗎?

程式碼 :
#include <stdio.h>

int main()
{
    int i;
        
    while(scanf("%d",&i)==1)
        printf("%d\n",(i<25)*(25-i)+(i>25)*(85-i));

    return 0;
}


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

2011年5月7日 星期六

d059: 數學函數練習

內容 :
    請依據下列說明求出該數學式的結果。

輸入說明 :
    輸入共 4 行:
    第一行有兩個整數 a, b 請求出 a 的 b 次方的值。
    第二行有一個整數,請求出該數字的平方根,精確到小數點下3位。
    第三行有一個整數,請求出該數字的絕對值。
    第四行有2個整數 a, b,請取一個整數亂數 x (a <= x < b)
    所有的輸入整數及計算結果均不大於 231

輸出說明 :
    根據每一行的輸入,輸出所要求的結果及格式。

範例輸入 :
2 10
25
-20
3 100

範例輸出 :
1024
5.000
20
RANDOM_NUMBER

程式碼 :
#include <stdio.h>
#include <math.h>

int ab(int a,int b)
{
    int i,sum=a;
    for(i=1;i<b;i++)
        sum = sum * a;
    return sum;
}
float sqr(int a)
{
    return sqrt(a);
}
int abs(int a)
{
    if(a < 0)
        return -a;
    else 
        return a;
}

int main() 
{
    long a,b;
    
    while(scanf("%d%d",&a,&b)==2)
    {
        printf("%d\n",ab(a,b));
        
        scanf("%d",&a);
        printf("%.3f\n",sqr(a));
        
        scanf("%d",&a);
        printf("%d\n",abs(a));
        
        scanf("%d%d",&a,&b);
        printf("%d\n",a);
    }
    
    return 0;
}




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

d058: BASIC 的 SGN 函數

內容 :
    在 BASIC 語言中有一個 SGN 函數,(VB .Net 改成 Math.Sign),它會根據參數的正負號傳回 1, 0, 或 -1。請你寫一個程式來模仿這個函數,給你一個整數 n,若 n > 0 請輸出 1,若 n = 0 請輸出 0,若 n < 0 請輸出 -1。

輸入說明 :
    輸入只有一行,其中含有一個整數。

輸出說明 :
    依題目說明,請輸出 1、0、或 -1。

範例輸入 :
-9

範例輸出 :
-1

程式碼 :
#include <stdio.h>

int main()
{
    int n;
    
    while(scanf("%d",&n)==1)
        printf("%d\n",(n>0)-(n<0));

    return 0;
}



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

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