SlideShare a Scribd company logo
1 of 24
+ 
CodeFestival 2014 
ICPC AOJ Meeting 2014/9/22
+ 
大会開催ページ 
http://code-festival-2014-quala.contest.atcoder.jp/#
+ 
Problem 1 
 このコンテスト名は、CODE FESTIVAL 2014です。 
 しかし、物覚えが悪い高橋君は、いつも、2014を付け忘れて 
しまいます。 
 そこで、高橋君は、文字列に自動的に2014を付け加えるソフ 
トを作ろうと思いました。 
 文字列S が与えられます。文字列S に、2014を付け加えた文 
字列を出力してください。 
 なお、半角スペースなどを付ける必要はありません。 
http://code-festival-2014-quala.contest.atcoder.jp/tasks/code_festival_qualA_a
+ 
SourceCode 
public class Main { 
public static void main(String[] args){ 
System.out.println(new java.util.Scanner(System.in).nextLine()+"2014"); 
} 
}
+
+ 
Problem 2 
 文字列S は、文字列A を、10100 個連結させた文字列です。 
 文字列S のB 文字目の文字は何かを出力しなさい。 
http://code-festival-2014-quala.contest.atcoder.jp/tasks/code_festival_qualA_b
+
+ 
SourceCode 
import java.util.Scanner; 
/** 
* Created by nullzine on 2014/09/20. 
*/ 
public class Main { 
public static void main(String[] args){ 
Scanner sc = new Scanner(System.in); 
String str = sc.nextLine(); 
long n = Long.parseLong(sc.nextLine()); 
System.out.println(str.charAt((int)((n-1)%(long)str.length()))); 
} 
}
+
+ 
Problem 3 
 高橋君は、西暦A 年の元旦に地球で生まれ、西暦B 年の大晦日に地球を 
去る予定です。 
 高橋君は、地球で何回2 月29 日を過ごせるかを調べようと思いました。 
 2 月29 日があるのはうるう年だけであり、うるう年であるかどうかは、 
以下のルールで決定されます。 
 西暦年が4 で割り切れる年はうるう年である。 
 ただし、西暦年が100 で割り切れる年はうるう年ではない。 
 ただし、西暦年が400 で割り切れる年はうるう年である。 
 高橋君が、2 月29 日を過ごせる回数を出力してください。なお、高橋君 
は非常に長生きであることがあることに注意してください。 
http://code-festival-2014-quala.contest.atcoder.jp/tasks/code_festival_qualA_c
+
+ 
SourceCode 1 
import java.util.Scanner; 
public class Main { 
public static void main(String[] args){ 
Scanner sc = new Scanner(System.in); 
String[] strs = sc.nextLine().split(" "); 
long start = Long.parseLong(strs[0]); 
long end = Long.parseLong(strs[1]); 
long count=0; 
for(long i=start;i<=end;i++){ 
if(validation(i)){ 
count++; 
} 
} 
System.out.println(count); 
} 
private static boolean validation(long year){ 
if(year%4==0){ 
if(year%100==0){ 
if(year%400==0){ 
return true; 
}else{ 
return false; 
} 
}else{ 
return true; 
} 
}else{ 
return false; 
} 
} 
}
+
+ SourceCode 2 
public class Main { 
public static void main(String[] args){ 
Scanner sc = new Scanner(System.in); 
String[] strs = sc.nextLine().split(" "); 
long start = Long.parseLong(strs[0]); 
long end = Long.parseLong(strs[1]); 
long count=0; 
outside:for(long i=start;i<=end;i++){ 
if(validation(i)){ 
count++; 
for(long j=i+4;j<=end;j+=4){ 
if(validation(j)){ 
count++; 
} 
if(end-4<j){ 
break outside; 
} 
} 
} 
} 
System.out.println(count); 
} 
private static boolean validation(long year){ 
if(year%4==0){ 
if(year%100==0){ 
if(year%400==0){ 
return true; 
}else{ 
return false; 
} 
}else{ 
return true; 
} 
}else{ 
return false; 
} 
} 
}
+
+ 
SourceCode 3 
dataSet = $stdin.read.split(" ").map{|m|m.to_i} 
data=(dataSet[0]..dataSet[1]).to_a 
a = data.select{|i|i%4==0} 
b = a.select{|i|i%100==0} 
c = b.select{|i|i%400==0} 
p a.length-b.length+c.length
+
+ 
Problem 4 
 高橋君の電卓は壊れてしまっています。K 種類より多くの種 
類の数字を打つと、電卓が壊れてしまいます。 
 整数A が与えられます。高橋君は、この整数を入力したいで 
す。ですが、普通にその整数を打とうとすると、電卓が壊れ 
てしまうことがあるため、電卓が壊れない範囲で、出来るだ 
け整数A との差の大きさが小さい整数を入力します。 
 この時、高橋君が入力する整数と、整数A の差の大きさがい 
くつになるかを出力しなさい。 
http://code-festival-2014-quala.contest.atcoder.jp/tasks/code_festival_qualA_d
+
+ 
SourceCode 
import java.util.*; 
public class Main { 
public static void main(String[] args){ 
Scanner sc = new Scanner(System.in); 
String[] strs = sc.nextLine().split(" "); 
int data = Integer.parseInt(strs[0]); 
int n = Integer.parseInt(strs[1]); 
System.out.println(new Execution(data,n).getRes()); 
} 
} 
class DataSet{ 
public int n; 
public int diff; 
public DataSet(int n,int diff){ 
this.n=n; 
this.diff=diff; 
} 
}
+ 
class Execution{ 
private int data;; 
private int n; 
private ArrayList<Integer> result; 
private int res; 
public Execution(int data,int n){ 
this.data=data; 
this.n=n; 
if(n!=10) { 
result = new ArrayList<>(); 
calculation(); 
Collections.sort(result); 
res = result.get(0); 
}else{ 
res=0; 
} 
} 
private void calculation(){ 
for(int i=0;i<=data*2;i++){ 
if(validation(i)){ 
result.add(Math.abs(data-i)); 
} 
} 
} 
private boolean validation(int num){ 
String str = Integer.toString(num); 
TreeSet<Character> tmp = new TreeSet<>(); 
for(int i=0;i<str.length();i++){ 
if(!tmp.contains(str.charAt(i))){ 
tmp.add(str.charAt(i)); 
if(n<tmp.size()){ 
return false; 
} 
} 
} 
return true; 
} 
public int getRes(){ 
return res; 
} 
}
+ 
TreeSet 
 TreeSetは重複を許さず、要素が一定の順に並ぶコレクション 
である。 
 コレクションの中にある要素が含まれているかどうかは 
contains()でチェックできる。 
 これを利用すると、文字列の中に何種類の文字が含まれるか特 
定できる。 
 今回の利用法では要素が一定の順番に並んでいる必要が無いた 
めHashSetで良かったかもしれない。
+
+ 
Result

More Related Content

Viewers also liked (12)

Abc009
Abc009Abc009
Abc009
 
軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップ軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップ
 
CODE FESTIVAL 2014 予選A 解説
CODE FESTIVAL 2014 予選A 解説CODE FESTIVAL 2014 予選A 解説
CODE FESTIVAL 2014 予選A 解説
 
05 desarrollocss (3)
05 desarrollocss (3)05 desarrollocss (3)
05 desarrollocss (3)
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
Rubyを使ったオブジェクト指向デザイン実践:第一章発表
Rubyを使ったオブジェクト指向デザイン実践:第一章発表Rubyを使ったオブジェクト指向デザイン実践:第一章発表
Rubyを使ったオブジェクト指向デザイン実践:第一章発表
 
Meeting7
Meeting7Meeting7
Meeting7
 
Meeting6
Meeting6Meeting6
Meeting6
 
Meeting9
Meeting9Meeting9
Meeting9
 
Meeting8
Meeting8Meeting8
Meeting8
 
breitling
breitlingbreitling
breitling
 
Aloe vera , la verdad
Aloe vera , la verdadAloe vera , la verdad
Aloe vera , la verdad
 

More from nullzine (9)

Meeting19
Meeting19Meeting19
Meeting19
 
Meeting18
Meeting18Meeting18
Meeting18
 
Meeting13
Meeting13Meeting13
Meeting13
 
Meeting12
Meeting12Meeting12
Meeting12
 
Meeting11
Meeting11Meeting11
Meeting11
 
Meeting10
Meeting10Meeting10
Meeting10
 
Meeting4
Meeting4Meeting4
Meeting4
 
第二回ミーティングスライド
第二回ミーティングスライド第二回ミーティングスライド
第二回ミーティングスライド
 
Meeting1
Meeting1Meeting1
Meeting1
 

Meeting5

  • 1. + CodeFestival 2014 ICPC AOJ Meeting 2014/9/22
  • 3. + Problem 1  このコンテスト名は、CODE FESTIVAL 2014です。  しかし、物覚えが悪い高橋君は、いつも、2014を付け忘れて しまいます。  そこで、高橋君は、文字列に自動的に2014を付け加えるソフ トを作ろうと思いました。  文字列S が与えられます。文字列S に、2014を付け加えた文 字列を出力してください。  なお、半角スペースなどを付ける必要はありません。 http://code-festival-2014-quala.contest.atcoder.jp/tasks/code_festival_qualA_a
  • 4. + SourceCode public class Main { public static void main(String[] args){ System.out.println(new java.util.Scanner(System.in).nextLine()+"2014"); } }
  • 5. +
  • 6. + Problem 2  文字列S は、文字列A を、10100 個連結させた文字列です。  文字列S のB 文字目の文字は何かを出力しなさい。 http://code-festival-2014-quala.contest.atcoder.jp/tasks/code_festival_qualA_b
  • 7. +
  • 8. + SourceCode import java.util.Scanner; /** * Created by nullzine on 2014/09/20. */ public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String str = sc.nextLine(); long n = Long.parseLong(sc.nextLine()); System.out.println(str.charAt((int)((n-1)%(long)str.length()))); } }
  • 9. +
  • 10. + Problem 3  高橋君は、西暦A 年の元旦に地球で生まれ、西暦B 年の大晦日に地球を 去る予定です。  高橋君は、地球で何回2 月29 日を過ごせるかを調べようと思いました。  2 月29 日があるのはうるう年だけであり、うるう年であるかどうかは、 以下のルールで決定されます。  西暦年が4 で割り切れる年はうるう年である。  ただし、西暦年が100 で割り切れる年はうるう年ではない。  ただし、西暦年が400 で割り切れる年はうるう年である。  高橋君が、2 月29 日を過ごせる回数を出力してください。なお、高橋君 は非常に長生きであることがあることに注意してください。 http://code-festival-2014-quala.contest.atcoder.jp/tasks/code_festival_qualA_c
  • 11. +
  • 12. + SourceCode 1 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String[] strs = sc.nextLine().split(" "); long start = Long.parseLong(strs[0]); long end = Long.parseLong(strs[1]); long count=0; for(long i=start;i<=end;i++){ if(validation(i)){ count++; } } System.out.println(count); } private static boolean validation(long year){ if(year%4==0){ if(year%100==0){ if(year%400==0){ return true; }else{ return false; } }else{ return true; } }else{ return false; } } }
  • 13. +
  • 14. + SourceCode 2 public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String[] strs = sc.nextLine().split(" "); long start = Long.parseLong(strs[0]); long end = Long.parseLong(strs[1]); long count=0; outside:for(long i=start;i<=end;i++){ if(validation(i)){ count++; for(long j=i+4;j<=end;j+=4){ if(validation(j)){ count++; } if(end-4<j){ break outside; } } } } System.out.println(count); } private static boolean validation(long year){ if(year%4==0){ if(year%100==0){ if(year%400==0){ return true; }else{ return false; } }else{ return true; } }else{ return false; } } }
  • 15. +
  • 16. + SourceCode 3 dataSet = $stdin.read.split(" ").map{|m|m.to_i} data=(dataSet[0]..dataSet[1]).to_a a = data.select{|i|i%4==0} b = a.select{|i|i%100==0} c = b.select{|i|i%400==0} p a.length-b.length+c.length
  • 17. +
  • 18. + Problem 4  高橋君の電卓は壊れてしまっています。K 種類より多くの種 類の数字を打つと、電卓が壊れてしまいます。  整数A が与えられます。高橋君は、この整数を入力したいで す。ですが、普通にその整数を打とうとすると、電卓が壊れ てしまうことがあるため、電卓が壊れない範囲で、出来るだ け整数A との差の大きさが小さい整数を入力します。  この時、高橋君が入力する整数と、整数A の差の大きさがい くつになるかを出力しなさい。 http://code-festival-2014-quala.contest.atcoder.jp/tasks/code_festival_qualA_d
  • 19. +
  • 20. + SourceCode import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String[] strs = sc.nextLine().split(" "); int data = Integer.parseInt(strs[0]); int n = Integer.parseInt(strs[1]); System.out.println(new Execution(data,n).getRes()); } } class DataSet{ public int n; public int diff; public DataSet(int n,int diff){ this.n=n; this.diff=diff; } }
  • 21. + class Execution{ private int data;; private int n; private ArrayList<Integer> result; private int res; public Execution(int data,int n){ this.data=data; this.n=n; if(n!=10) { result = new ArrayList<>(); calculation(); Collections.sort(result); res = result.get(0); }else{ res=0; } } private void calculation(){ for(int i=0;i<=data*2;i++){ if(validation(i)){ result.add(Math.abs(data-i)); } } } private boolean validation(int num){ String str = Integer.toString(num); TreeSet<Character> tmp = new TreeSet<>(); for(int i=0;i<str.length();i++){ if(!tmp.contains(str.charAt(i))){ tmp.add(str.charAt(i)); if(n<tmp.size()){ return false; } } } return true; } public int getRes(){ return res; } }
  • 22. + TreeSet  TreeSetは重複を許さず、要素が一定の順に並ぶコレクション である。  コレクションの中にある要素が含まれているかどうかは contains()でチェックできる。  これを利用すると、文字列の中に何種類の文字が含まれるか特 定できる。  今回の利用法では要素が一定の順番に並んでいる必要が無いた めHashSetで良かったかもしれない。
  • 23. +