2016年1月15日 星期五

d587: 參貳壹真好吃

內容 :
參貳壹真是太好吃了!
現在有一連串由1、2、3這三個數字組成的數列,
請你把他們由小到大排好好嗎?
輸入說明 : 
本題有2個測資點,每個50分,每個測資點只有一組測資。
第一行有整數n(1<=n<=1000000)代表接下來的數列有幾個數字
第二行就是這n個包含1、2、3的數字
輸出說明 : 
對於每組測資,請輸出一行由小到大1~3排好的結果。
範例輸入 : help
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%)正常
標籤:
出處: 
jack1 (管理:jack1)


import java.util.Arrays;
import java.util.Scanner;

public class d587 {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++)
arr[i]=sc.nextInt();
Arrays.sort(arr);
for(int i=0;i<n;i++)
System.out.print(arr[i]+" ");
System.out.println();
}
}

}

d584: 技能點數skill

內容 :
在楓之谷這個線上遊戲裡,
每個人創角色剛開始都是1級的初心者,初心者只有"初心者技能點數",不特別計算。
8級可以轉職成為法師,10級可以轉職成為劍士、弓箭手、盜賊。
轉職後可以拿到技能點數1點,並且在往後每次升級都可以得到3點技能點數。
30級解任務打完討厭的黑色珠子以後,
可以進行第二次轉職,拿到1點技能點數。
70級進行第三次轉職,天阿…要和一轉教官的分身PK,
打贏就可以第三次轉職,拿到1點技能點數。
好不容易練到120級四轉,解了超討厭的轉職任務以後,
第四次轉職可以拿到三點技能點。
最高200級封頂。

現在梅蘭和吳企鵝都玩膩冰雷大魔導士和主教了,
他們正在計畫練分身,請你幫他們算一算某個等級的某職業有多少技能點數呢?
輸入說明 : 
本題有三個測資點,每個測資點有多組測試資料。
每組測試資料一行,有兩個正整數。
第一個正整數表示這個角色的職業,0是初心者、1是劍士、2是法師、3是弓箭手、4是盜賊
第二個正整數表示這個角色的等級lv(1<=lv<=200)
輸出說明 : 
按照說明寫的規則,請輸出這個角色的一生會拿到多少技能點數。
請注意:
1.初心者沒有技能點數,甚至有一種超級初心者完全不轉職可以練到100多等甚至200!
2.我們假設要玩法師的人會乖乖在8等一轉,其它在10等一轉,
並且他們到了30、70、120級也會乖乖自動去轉職。
(也就是假設等級輸入70,那麼請把一轉、二轉、三轉附贈的技能點數都算進去)
範例輸入 : help
0 1
0 9
0 200
1 10
3 11
4 29
4 30
2 30
1 50
3 70
2 120
4 200
範例輸出:
0
0
0
1
4
58
62
68
122
183
342
576
提示 : 
三個測資點的配分分別是30%、35%、35%
第一個測資點和範例測資完全一樣(炸)
第二個測資點還蠻正常的(炸)
第三個測資點…也蠻正常的(炸)
標籤:
出處: 
jack1 (管理:jack1)


import java.util.Scanner;

public class d584 {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int job=sc.nextInt();
int LV=sc.nextInt();
int total=0;
if(job==0)
total=0;
else if(job==1 || job==3 || job==4){
 total=(LV-10)*3;
 if(LV>=10) total+=1;
 if(LV>=30) total+=1;
 if(LV>=70) total+=1;
 if(LV>=120) total+=3;  
}
else if(job==2){
 total=(LV-8)*3;
 if(LV>=8) total+=1;
 if(LV>=30) total+=1;
 if(LV>=70) total+=1;
 if(LV>=120) total+=3;
}
System.out.println(total>=0?total:0);
}

}

}

d583: 幼稚的企鵝

內容 :
小企鵝總是天真可愛,但擺脫不了幾分幼稚。
現在企鵝幼稚園的企鵝老師要小企鵝任意排隊。
而小企鵝們卻很堅持要照老師給他們的座號來排隊,
偏偏有的小企鵝就是會忘記自己的座號亂排,
於是可以想見的是一群短鳥喙的小企鵝爭吵互啄的景象了…
輸入說明 : 
本題有2個測資點,每個50分,每個測資點有多組測資。
每組測資的第一行有整數n(1<=n<=100000)代表有幾隻企鵝。
第二行則有n個數字的數列代表每隻企鵝的座號,並且座號必定有1~n不重覆。
輸出說明 : 
請由小到大輸出已經排序的數列。
範例輸入 : help
10
9 5 10 4 3 6 1 2 7 8
30
30 29 28 27 26 25 10 11 12 13 15 14 16 19 18 17 20 24 23 22 21 8 9 7 6 5 3 4 2 1
範例輸出:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
提示 : 
第一個測資點(50%)和範例測資一模一樣(爆)
第二個測資點(50%)則正常
標籤:
出處: 
jack1 (管理:jack1)


import java.util.Arrays;
import java.util.Scanner;

public class d583 {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++)
arr[i]=sc.nextInt();
Arrays.sort(arr);
for(int i=0;i<n;i++)
System.out.print(arr[i]+" ");
System.out.println();
}

}

}

d562: 山寨版磁力蜈蚣

內容 :
遊戲洛克人有一個BOSS叫做磁力蜈蚣。
現在山寨版磁力蜈蚣出現了,顯然設計得比本尊弱得很多:
它身上所有的節是由一個個附有數字的磁鐵所組成,
並且會暫時分解自己身上所有的節散落來攻擊玩家。
但是有一天它發現它身上的節居然隨著絕招的使用越來越少!
每次山寨版磁力蜈蚣將自己分解時,會讓所有磁鐵的排列順序倒轉。
例如原本是:1 2 3 4 5,那麼倒轉後便成了5 4 3 2 1
但是現在每次分解前便會先遺失第一節磁鐵,
也就是原本:1 2 3 4 5,會遺失1,
剩下的磁鐵倒轉後是5 4 3 2
下次分解會遺失5,剩下的倒轉成了2 3 4
,再遺失2,成了4 3,最後剩下3便無法分解。
請利用程式來模擬這個過程。
輸入說明 : 
共計三個測資點。
每組測資有兩行
第一行有整數n(0<n<100)代表有幾個數,
第二行有n個數A1...An(0<An<100)表示每個磁鐵上的數字
輸出說明 : 
第一行請輸出最一開始的狀態
第二行開始,輸出「刪去第一項後,全部倒轉的結果」
直到數字只剩下一個為止
範例輸入 : help
5
99 77 66 44 11
7
1 98 95 52 56 34 43
範例輸出:
99 77 66 44 11
11 44 66 77
77 66 44
44 66
66

1 98 95 52 56 34 43
43 34 56 52 95 98
98 95 52 56 34
34 56 52 95
95 52 56
56 52
52
提示 : 
這只是山寨板的蜈蚣,如果這題對你輕而易舉,請試試morris1028出的強化蜈蚣:
http://zerojudge.tw/ShowProblem?problemid=d569
標籤:
出處: 
jack1 (管理:jack1)

import java.util.Scanner;

public class d562 {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++)
arr[i]=sc.nextInt();
int start=0,end=n,flag=0;
String str;                                     //改用字串一次println出來居然比較快...
for(int i=flag;i<=n/2;i++){
str="";
while(flag<end){
//System.out.print(arr[flag]+" ");
str+=arr[flag]+" ";
flag++;
}
System.out.println(str);
end--; flag--;
str="";
while(flag>start){
//System.out.print(arr[flag]+" ");
str+=arr[flag]+" ";
flag--;
}
start++; flag++;
System.out.println(str);
}
}

}

}

d559: 班號

內容 :
在北市師大附中,每個班都有一個屬於自己的班號,例如188班、1100班…
而利用C語言的printf函式便能將整數變數輸出到螢幕上,
現在請你實作這個基本輸出。
輸入說明 : 
測資中有多行整數n(1<=n<=1261)
輸出說明 : 
請對應每個n輸出一行:
'C' can use printf("%d",n); to show integer like XXXX
(請參考範例輸出)
範例輸入 : help
1252
1000
範例輸出:
'C' can use printf(&quot;%d&quot;,n); to show integer like 1252
'C' can use printf(&quot;%d&quot;,n); to show integer like 1000
提示 : 
班號對你太簡單了嗎?這題相信你能輕鬆AC:
http://zerojudge.tw/ShowProblem?problemid=d564
標籤:
出處: 
jack1 (管理:jack1)


import java.util.Scanner;

public class d559 {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
System.out.println("'C' can use printf(\"%d\",n); to show integer like "+n);
}

}

}

d532: 文文的求婚 (三)

內容 :
經過了一番苦練之後,文文終於可以很流利地用英文回答有關閏平年的問題,心想珊姍現在應該會答應他的求婚了吧。當文文開心地來找珊珊時,珊珊為了確保她後半輩子的幸福,給了他另一個問題:"I will marry you if you can tell me how many leap years there are between year a and year b, inclusive." 意思是「如果你可以告訴我西元 a 年和 b 年之間 (含) 有幾個閏年,我就嫁給你!」
輸入說明 : 
輸入只有一行,含有兩個由空白隔開的整數 a, b (1752<a≤b≤10000)。
輸出說明 : 
請輸出一個整數代表 a 年與 b 年之間有幾個閏年。
範例輸入 : help
2012 2016
範例輸出:
2
提示 : 
標籤:
出處: 


import java.util.Scanner;

public class d532 {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int a=sc.nextInt();
int b=sc.nextInt();
int total=0;
for(int i=a;i<=b;i++){
if(i%4==0&&i%100!=0 || i%400==0)
total++;
}
System.out.println(total);
}

}

}

d511: 小明的作業

內容 :
小明這學期的數學課教到了三角形,於是老師給了他們一個作業,這個星期一到星期五每個人上學時都要帶三根樹枝到學校來,如果那三根樹枝可以構成一個三角形,那天就可以加一分。給你小明所帶樹枝的長度,請你幫他看看他可以加幾分?
輸入說明 : 
輸入一共有 5 行,每行有 3 個整數,代表當天小明所帶的樹枝的長度。
輸出說明 : 
輸出一個整數,代表小明可以加幾分。
範例輸入 : help
1 2 3
2 4 6
3 4 5
5 3 2
1 3 5
範例輸出:
1
提示 : 
標籤:
出處: 

import java.util.Scanner;
 public class d511 {
       public static void main(String[] args) { 
       Scanner sc=new Scanner(System.in);
         while(sc.hasNext()){
                  int a,b,c;
            int count=0;
         for(int i=0;i<5;i++){
           a=sc.nextInt();b=sc.nextInt();c=sc.nextInt();
           int flag=0;
           if(a+b>c) flag++;
           if(a+c>b) flag++;
           if(c+b>a) flag++;
           if(flag==3) count++;
        }
              System.out.println(count);
       }
    }
}