問1.1000 個の "Hello World" を出力するプログラムを作成して下さい。
各行に "Hello World" と書かれた 1000 行の文字列を出力して下さい。
PHP
hello.php
<?php
for($i=0; $i<1000; $i++){
echo "Hello World\n";
}
?>
Java
hello.java
public class Main{
public static void main(String[]args){
for(int i=0; i<1000; i++){
System.out.println("Hello World");
}
}
}
問2.1つの整数 x を読み込み、それをそのまま出力するプログラムを作成して下さい。
- 入力は複数のデータセットから構成されています。各データセットは1つの整数 x を含む1行から構成されています。
- x が 0 のとき入力の終わりを示し、このデータセットに対する出力を行ってはいけません。
- 各データセットごとに、以下の形式で x を出力して下さい:
Case i: x
ここで、i は1から始まるデータセットの番号を示します。Caseと番号 iの間に1つの空白を入れて下さい。また、:(コロン)と整数 x の間に1つの空白を入れて下さい。
PHP
AOJ.php
<?php
$i = 1;
while(($x = intval(trim(fgets(STDIN))))!==0){
printf("Case %d: %d\n",$i,$x);
$i++;
}
?>
- 変数に値を代入してから比較演算したいので()で優先順位つける
- これは逐次出力だけど、複数の入力を一回で受け取るようなプログラムだった場合は以下のようにする
array..php
<?php
//すべての行を配列に保存
$lines = [];
while (($x = intval(trim(fgets(STDIN)))) !== 0) {
$lines[] = $x;
}
// すべての入力を受け取った後、まとめて出力
foreach ($lines as $i => $x) {
printf("Case %d: %d\n", $i + 1, $x);
}
?>
Java
AOJ.java
import java.util.Scanner;
public class Main{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int i =1;
while(true){
int x = sc.nextInt();
if(x==0)break;
System.out.println("Case "+i+": "+x);
i++;
}
sc.close();
}
}
- while(true)→無限ループ。中でif文用いてループ抜ける処理必須。忘れないように気を付ける。
- while 文に else を直接書くことはできない(だからかわりにif使う)
- Java では ==は使えても !== という比較演算子は存在しない。 != が正しい。
問3.2つの整数 x, y を読み込み、それらを値が小さい順に出力するプログラムを作成して下さい。
- 入力は複数のデータセットから構成されています。各データセットは空白で区切られた2つの整数 x, y を含む1行から構成されています。
- x と y がともに 0 のとき入力の終わりを示し、このデータセットに対する出力を行ってはいけません。
- 各データセットごとに、x と y を小さい順に並べたものを1行に出力して下さい。x と y の間には1つの空白を入れて下さい。
PHP
AOJ.php
<?php
while(true){
fscanf(STDIN, "%d %d", $a,$b);
if($a==0&&$b==0){
break;
}
elseif($a>$b){
echo "$b $a\n";
}else{
echo "$a $b\n";
}
}
?>
別解
Other1.php
<?php
while(true){
$input = explode(" ",trim(fgets(STDIN)));
$x = $input[0];
$y = $input[1];
if($x == 0 && $y == 0) break;
if($x > $y){
echo $y." ".$x."\n";
} else {
echo $x." ".$y."\n";
}
}
?>
other2.php
<?php
while (true) {
list($x, $y) = array_map("intval", explode(' ', trim(fgets(STDIN))));
if ($x == 0 and $y == 0) {
break;
} else {
if ($x > $y) {
echo "{$y} {$x}\n";
} else {
echo "{$x} {$y}\n";
}
}
}
?>
other3.php
<?php
while(true) {
$stdin = trim(fgets(STDIN));
$num = explode(' ', $stdin);
if($num[0] == 0 && $num[1] == 0) {
break;
}
sort($num);
echo $num[0] . ' ' . $num[1] . "\n";
}
?>
Java
AOJ.java
import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int[] arr = new int[2];
while(true){
for(int i = 0; i < 2; i++){
arr[i] = sc.nextInt();
}
if(arr[0]==0 && arr[1]==0){
break;
}
Arrays.sort(arr);
System.out.println(arr[0]+" "+arr[1]);
}
}
}
問4.3つの整数a,b,cを読み込みaからbまでの整数の中に、cの約数がいくつあるかを求めるプログラムを作成してください。
PHP
AOJ.php
<?php
fscanf(STDIN,"%d %d %d",$a,$b,$c);
$div=0;
for($i=$a;$i<=$b;$i++){
if($c%$i==0){
$div++;
}
}
echo "$div\n";
//3つの入力を受け取る
//a~bに「%c==0」があればカウント集計
?>
Java
AOJ.java
import java.util.Scanner;
public class Main{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int cnt = 0;
for(int i = a; i <= b; i++){
if(c%i==0){
cnt++;
}
}
System.out.println(cnt);
}
}