2011年9月28日 星期三

d594: G. 總共需要多少錢

內容 :
    小甜和小甘是一對感情很要好的雙胞胎,她們的喜好相似,而且總是形影不離。一起到學校上課、討論功課和寫作業,外出用餐的時候總是點相同的食物,而且買東西的時候同一種東西一定會買兩份一模一樣的!

    每個星期三放學以後到去上補習班的空檔,小甜和小甘會一起去買一些點心和飲料來吃。因為她們還要趕著去上補習班,所以總是沒有太多時間挑選點心和飲料。

    由於小甜和小甘的喜好和行為模式實在是太相似了,兩個人每次都會考慮很久,然後選了相同的東西,於是她們決定一個人負責挑選一種點心、另一個人負責挑選一種飲料,這樣就可以省下很多時間了。

    小甜和小甘兩個人還有一個很大的毛病,就是她們每次都會懷疑店員算錯錢,偏偏兩個人的算數都不是很好。你能幫幫她們寫一個程式,用來計算每次買的點心和飲料總共需要多少錢嗎?

輸入說明 :
    第一行有一個整數 N,代表總共有幾本測試資料,至多 100 筆。
    接下來有 N 行,每一行代表一筆測試資料。
    每一筆測試資料有兩個整數 a 和 b(1 ≦ a, b ≦ 200 )
    代表這次小甜選的點心單價為 a、小甘選的飲料單價為 b。

輸出說明 :
    針對每一筆測試資料,輸出小甜和小甘這次買的點心和飲料總共需要多少錢。

範例輸入 :
3
75 125
49 35
50 30

範例輸出 :
400
168
160

程式碼 :
#include <stdio.h>

int main()
{
    int i,n,a,b;
    
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&a,&b);
        printf("%d\n",(a+b)<<1);
    }
    return 0;
}





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

d590: C. 一定中大樂透

內容 :
    政府最近開始推行『一定中大樂透』,規則如下:
    自己在心中選擇一個數字 N ( 0 < N ≤ 100 ),並且寫在紙條上
    機器自動選擇一個數字 M ( 0 < M ≤ 100 )
    如果紙條上的數字和機器選擇的數字同為「奇數」或是同為「偶數」,則玩家勝,否則玩家失敗。
    現在給你玩家選擇的數字 N 和機器選擇的數字 M,請判斷玩家是否勝利。

輸入說明 :
    輸入檔含有多組資料,每組資料一行。
    一組資料包含兩個數字 N, M ( 0 < N ≤ 100, 0 < M ≤ 100 ) 以空白字元分開。
    當 N = 0 且 M = 0 時代表輸入結束,這組資料不需要被處理。

輸出說明 :
    對每組測試資料輸出一行,如果玩家勝,則輸出「Win」,否則輸出「Loss」。

範例輸入 :
1 2
3 3
100 2
0 0

範例輸出 :
Loss
Win
Win

程式碼 :
#include <stdio.h>
int main() 
{
    int a,b;
    
    while(scanf("%d%d",&a,&b)==2)
    {
        if(a == b && a == 0)
            break;
        if((a%2)==(b%2))
            printf("Win\n");
        else
            printf("Loss\n");
        
    }
    
    return 0;
}




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

d587: 參貳壹真好吃

內容 :
    參貳壹真是太好吃了!
    現在有一連串由1、2、3這三個數字組成的數列,
    請你把他們由小到大排好好嗎?

輸入說明 :
    本題有2個測資點,每個50分,每個測資點只有一組測資。
    第一行有整數n(1<=n<=1000000)代表接下來的數列有幾個數字
    第二行就是這n個包含1、2、3的數字

輸出說明 :
    對於每組測資,請輸出一行由小到大1~3排好的結果。

範例輸入 :
9
1 1 1 2 2 3 3 3 2

範例輸出 :
1 1 1 2 2 2 3 3 3

提示 :
    背景知識: 陣列
    對於兩個測資點…
    第一個測資點(50%)的n是3的倍數,並且1、2、3這三種元素的數量均等
    第二個測資點(50%)正常

程式碼 :
#include <stdio.h>

int main() 
{
    int i,j,n,num,arr[4];
    
    while(scanf("%d",&n)==1)
    {
        for(i=1;i<4;i++)
            arr[i] = 0;
        
        for(i=0;i<n;i++)
        {
            scanf("%d",&num);
            arr[num]++;
        }
        
        for(i=1;i<4;i++)
        {
            num = arr[i];
            for(j=0;j<arr[i];j++)
                printf("%d ",i);
        }
        printf("\n");
    }  
    return 0;
}




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

2011年9月25日 星期日

a244: 新手訓練 ~ for + if

內容 :
    內容就是~~~~
    希望學到for迴圈和剛開始coding的學弟好好加油!!!!

輸入說明 :
    第一行有一個正整数N,
    代表接下來有N行每行有三個正整數 a , b , c
    ( 1 <= b , c <= 2147483647 )
    ( 1 <= a <= 4 )

輸出說明 :
    如果 a = 1 請輸出 b+c
    如果 a = 2 請輸出 b-c
    如果 a = 3 請輸出 b*c
    如果 a = 4 請輸出 b/c
    結果請用整数輸出

範例輸入 :
4
1 2 3
2 2 3
3 2 3
4 2 3

範例輸出 :
5
-1
6
0

程式碼 :
#include<stdio.h>

int main()
{
    long long int i,n,a,b,c;
    
    scanf("%lld",&n);
    for(i=0; i<n; i++)
    {
        scanf("%lld %lld %lld",&a,&b,&c);
        if(a == 1)
            printf("%lld\n",b+c);
        else if(a == 2)
            printf("%lld\n",b-c);
        else if(a == 3)
            printf("%lld\n",b*c);
        else
            printf("%lld\n",b/c);
    }
    return 0;
}


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

a241: 第二題:1 / x 是有限小數

內容 :
    請你寫一個程式,輸入正整數 n 求 1 < x ≤ n﹐滿足 1 / x 是有限小數的 x 值共有多少個?

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

輸出說明 :
    對於每一組測試資料,輸出一行一個數字,代表著這個個數。

範例輸入 :
2
3
5

範例輸出 :
1
3

提示 :
    如果有包含2和5以外的因數,就是無限小數

程式碼 :
#include<stdio.h>

int main()
{
    int i,j,m,n,two,five,two_p,five_p,record_p,total;
    int record[500001];
    
    total = 0;
    record[0] = 1;
    record_p = 1;
    two_p = 0;
    five_p = 0;
    two = record[two_p] * 2;
    five = record[five_p] * 5;
    while(two <= 100000000 || five <= 100000000)
    {
        if(two == five)
        {
            record[record_p] = two;
            record_p++;
            if(two < 100000000)
            {
                two_p++;
                two = record[two_p] * 2;
            }
            else
                two = 100000001;
            if(five < 100000000)
            {
                five_p++;
                five = record[five_p] * 5;
            }
            else
                five = 100000001;
        }
        else if(two < five)
        {
            record[record_p] = two;
            record_p++;
            if(two < 100000000)
            {
                two_p++;
                two = record[two_p] * 2;
            }
            else
                two = 100000001;
        }
        else
        {
            record[record_p] = five;
            record_p++;
            if(five < 100000000)
            {
                five_p++;
                five = record[five_p] * 5;
            }
            else
                five = 100000001;
        }
        total++;
    }
    record[record_p] = 100000001;
    total++;
            
    scanf("%d",&m);
    for(i=0; i<m; i++)
    {
        scanf("%d",&n);
        for(j=1; j<total; j++)
            if(n < record[j])
                break;
        printf("%d\n",j-1);        
    }
    return 0;
}



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

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




2011年9月18日 星期日

幫VMware減肥和刪除沒用的檔案

    VMware用越久,佔的空間就越大,今天查看了一下,裡面的硬碟所佔空間(C槽)只有6G,結果外面的空間(.vmdk)卻達到10幾G,差這麼多空間,有辦法可以刪除嗎? 當然有啦! 還有其它是VMware用到的暫存資料,我們也可以刪除的呢?

VMware版本
VMware Workstation
7.1.4 build-385536
有安裝VMware tools

1.幫你的VMware硬碟減肥

  • 方法1 (修改自此篇文章) PS:如果懶得看的人,可以看紅字就行了
    • 步驟1 : 打開VMware,並開啟你要壓縮的作業系統
    • 步驟2 : 先確定你的VMware的要壓縮的作業系統有裝VMware Tools(如果沒裝,在windows下可以用選單選VM→Install VMWare Tools , 在Linux不確定這樣可不可以)。
    • 步驟3 : 將虛擬系統裡的垃圾文件清理乾淨(如:附屬應用程式->系統工具->清理磁碟 或者 解安裝用不到的軟體 等方法),然後關機
    • 步驟4 : 選擇你的虛擬機器選項下的"Edit virtual machine settings",在跳出視窗的"Hardware",選擇要處理的硬碟(Hard Disk),再點右邊的"Defragment"進行碎片整理。
                    PS: 在做這個步驟的時候,請一定要保留足夠的空間!!!
















                

                    
    • 步驟5 : 碎片整理完成後啟動虛擬作業系統
    • 步驟6 : 進入系統後點右下角的VMWare Tools圖標會彈出對話框。
    • 步驟7 : 選點「shrink」,選擇你要整理的槽,在按"prepare to shrink",就會開始馬上整理。
    • 步驟8 : 開始處理時,中間跳出視窗也選確定,直到它說完成,你就減肥成功了。

  • 方法2 (轉自此文章) PS:如果懶得看的人,可以看紅字就行了
    • 步驟1 : 首先你需要在真正的電腦找到vmware-vdiskmanager.exe,他會出現在你安裝VMware程式的目錄下,假設我把VMware裝在 C:\Program Files\VMware\VMware Workstation ,你可以在這個目錄下找到,並記起這個路徑。
    • 步驟2 : 在你真正的電腦,按 開始 -> 執行 -> cmd(命令提示字元)。
    • 步驟3 : 我們要先到虛擬機器(.vmdk)的目錄,所以先在cmd輸入"cd /d 虛擬機器的目錄" , 以下是我虛擬機器(.vmdk)的位址
    • cd /d D:\Virtual Machines\Windows XP Professional
      
    • 步驟4 : 再輸入"vmware-vdiskmanager.exe位址" -k "虛擬機器名稱.vmdk"
    • "C:\Program Files\VMware\VMware Workstation\vmware-vdiskmanager.exe" -k "Windows XP Professional.vmdk"
    • 這樣就會開始壓縮了

2.刪除VMware的暫存檔

  • 虛擬機器(xp)裡面的"C:\Documents and Settings\Administrator\Local Settings\Temp\VMwareDnD"裡面的資料都可以刪除,它是當你有資料從真實作業系統到虛擬作業系統複製過程中的暫存檔,所以刪除不會有問題。
  • 在我的真實電腦(Win7)裡面的"C:\Users\Administrator\AppData\Local\Temp\VMwareDnD"裡面的資料都可以刪除,它是當你有資料從虛擬作業系統到真實作業系統複製過程中的暫存檔,所以刪除也不會有問題。

PS:如果有其他地方也可以刪除的也請告訴我一下阿,謝謝!

















2011年9月9日 星期五

a170: 天才的小明

內容 :
    小明剛上高中
    加入了WISH(花蓮高中資研社)
    剛學完進制
    正意氣風發
    沒想到老師突然出了一題加法
    這可不是一般的加法唷~~
    而是進制加法
    我們都知道
    8 + 8 = 16
    所以八進制加八進制就該以十六進制來表達啦~~
    於是老師出了N題八進制加八進制的題目
    請小明輸出十六進制的答案

輸入說明 :
    第一行 輸入一數N,代表有N題
    第2~N+1行 每行輸入兩數A,B(八進制表示)

輸出說明 :
    輸出 A+B 的結果,以十六進制大寫表示

範例輸入 :
3
7 7
77 7
77 77

範例輸出 :
E
46
7E

提示 :
    A、B以及A+B的范围均在long int内。

程式碼 :
#include<stdio.h>

int main()
{
    int n;
    long long a,b;
    
    scanf("%d",&n);
    while(scanf("%o %o",&a,&b)==2)
        printf("%X\n",a+b);
    
    return 0;
}




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

2011年9月5日 星期一

py2exe error: MSVCP90.dll: No such file or directory

    今天想把我的python轉成exe檔來執行,遇到了error

    error: MSVCP90.dll: No such file or directory

    我的環境有用到wxpython,但是不管怎麼說就是有問題!

    ↓這篇文章有教我們怎麼做

    簡單來說
    Step 1. 下載MSVCP90.dll
    Step 2. 貼到 C:\Python27\DLLs
    完成!!! 開始繼續執行py2exe

    後來看到官網居然有寫到以上的問題,原來是我沒有仔細看他的需求。
    想知道的人可以到右邊的連結觀看: 5.2. Python 2.6, 2.7, 3.0, 3.1