11/16 課題

課題

ACM 国際大学対抗プログラミングコンテストACM International Collegiate Programming Contest (ACM/ICPC) アジア地区予選 愛媛大会国内予選問題のA-Cのうちのどれか1題をなるべく早く解いて提出しなさい. データは標準入力(System.in)から読み込むようにプログラムを作ること.

問題Aに対応するプログラムは,クラス名をA(小文字ではなく大文字)として,「~/java/A.java」(Aは小文字ではなく大文字で)という ファイルに作る,B,Cも同様にする.

プログラムがちゃんと動くことを確かめたら,

/home08/ktanaka/bin/report1116 問題名
を実行すること.問題名は,A-Cのうちのいずれかである.このプログラムは, ソースファイルのの有無,コンパイル,実行できるか,国内予選 問題のページで公開されているデータを与えた時の出力が公開されている出力データと合っているかどうかをチェックする.

自分の提出状況を調べるには,

/home08/ktanaka/bin/report1116
を実行する.

なお,今回はコンテストと合わせるために,早く提出した人に高い評価を与える(提出プログラムで上位から順に表示する). プログラムのコメント等は評価の対象としない.なお,答えが有っていても,公開 された出力データをただ表示するだけのプログラムなどは,後でプログラムを見て 排除する.


注意

試験ではないので,教員,TAに質問しても良いし,友人と相談しても良い. しかし,プログラムをそのまま移したり,検索エンジンで解答を探し出して 提出するのは認めない.
課題の提出期限は11月30日(火)の21:00.一度解いた問題については,2度と提出できない. 上の文で,「締切は23日」になっていたのを修正しました.

ヒント(1)

問題では,複数の数字が書かれている行が出てくるがこのような時は, java.lang.Stringクラスのメソッドsplitを使うと良い.使用している例を あげる.
class t{
    public static void main(String[] args){
	String s="100 200 300 400";
	String is[]=s.split(" ");
	for(int i=0;i< is.length;i++)
	    System.out.println(1+Integer.parseInt(is[i]));
    }
}
を実行すると,結果は
101
201
301
401
となる.

ヒント(2)

問題Bでは,読み込んだ文字列のn文字を取り出すという操作が必要になることがある。これには java.lang.StringクラスのメソッドcharAtを使うと良い.使用している例は教材の文字列の処理にある。

オプション課題

1題解くだけでもの足りない人は,A-Cの他の問題を解いてみて,提出して欲しい.