AOJ PG入門 #3

## 問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.１つの整数 x を読み込み、それをそのまま出力するプログラムを作成して下さい。
- 入力は複数のデータセットから構成されています。各データセットは１つの整数 x を含む１行から構成されています。
- x が 0 のとき入力の終わりを示し、このデータセットに対する出力を行ってはいけません。
- 各データセットごとに、以下の形式で x を出力して下さい：

Case i: x
ここで、i は１から始まるデータセットの番号を示します。Caseと番号 iの間に１つの空白を入れて下さい。また、:（コロン）と整数 x の間に１つの空白を入れて下さい。
### 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.２つの整数 x, y を読み込み、それらを値が小さい順に出力するプログラムを作成して下さい。
- 入力は複数のデータセットから構成されています。各データセットは空白で区切られた２つの整数 x, y を含む１行から構成されています。
- x と y がともに 0 のとき入力の終わりを示し、このデータセットに対する出力を行ってはいけません。
- 各データセットごとに、x と y を小さい順に並べたものを１行に出力して下さい。x と y の間には１つの空白を入れて下さい。

### 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.３つの整数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);
    }
}

```