0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AOJ PG入門#1

Last updated at Posted at 2025-01-14

問1:"Hello World" と一行に出力してください(改行を忘れずに)

PHP

AO.php
<?PHP
echo "Hello World\n;"
?>
  • echoの部分はprint()でもOK
  • エスケープシーケンスは文字列の一部として扱う。

Java

ao.java
public class Main{
    public static void main(String[] args){
        System.out.println("Hello World");
    }
}

問2:1つの整数 x を読み込んで、x の3乗を計算し結果を出力するプログラムを作成して下さい。

PHP

ao.php
<?php  
	$x = (int)trim(fgets(STDIN));  
	echo $x*$x*$x;
?>
  • STDINは標準入力(Standard Input)を指すPHPの定義済み定数。
  • fgetsはファイルやストリームから1行を取得する関数。
    標準入力からユーザーが入力した1行のデータを文字列として返す。
    入力が終わると改行(\n)も含まれるため、余計な改行を削除する処理が必要。
  • PHPにおける「trim関数」とは、文字列の先頭と末尾から余計な空白(半角スペースやTab)や改行を取り除くための関数。
  • 文字列データ→数値データにするには(int)文字列でキャスト。キャスト以外にもintval(文字列)としてもOK

Java

AOJ.java
import java.util.Scanner;

public class Main{
   public static void main(String[] args){
       Scanner sc = new Scanner(System.in);
       int input=sc.nextInt();
       System.out.println(input*input*input);
       sc.close();
   }
}
  • Scanner の使用が終わったら、リソースを解放するために close() メソッドを呼び出す

問3:たて a cm よこ b cm の長方形の面積と周の長さを求めるプログラムを作成して下さい。

面積と周の長さを1つの空白で区切って1行に出力して下さい。

PHP

AOJ.php
<?php
fscanf(STDIN, "%d %d", $a, $b);
$area=$a*$b;
$circum=2*($a+$b);
printf("%d %d\n", $area, $circum);
?>
  • fscanf():PHPでファイルや標準入力から指定されたフォーマットに従ってデータを読み取るための関数
example.php
fscanf(読み込むファイルやストリームのリソース,データの変換型,読み取り変換したデータを格納する変数)
  • 読み込むリソース:標準入力を行う場合はSTDIN
  • フォーマット指定子:intなら%d→その他string型なら%s,float型なら%f,char型(単一の文字)なら%c
  • printfもフォーマットされた文字列を出力するための関数。
example.php
printf(書式指定子を含む文字列,書式文字列内の書式指定子に対応する変数や値);
  • printfでは、フォーマット文字列の中に直接空白を入れることができる。

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 area = a * b;
        int circum = 2 * (a + b);
        
    
        System.out.println(area + " " + circum);
        
        
       sc.close();
    }
}

問4:秒単位の時間Sが与えられるので、h:m:sの形式へ変換して出力してください。

hは時間、mは 60未満の分、sは 60未満の秒とします。

PHP

AOJ.php
<?php
fscanf(STDIN,"%d",$s);

$h=floor($s/3600);
$m=floor(($s%3600)/60);
$sec=floor($s%60);

printf("%d:%d:%d\n", $h,$m,$sec);
?>
  • 時間→$S / 3600は、与えられた秒数を1時間あたりの秒数で割ることで、何時間か求める。floor()関数を使って、小数点以下を切り捨てる。
    例:3605秒の場合、3605 / 3600 = 1.000833なので、floor(1.000833)は1

  • 分→$S % 3600は、与えられた秒数から「時間部分」を除いた残りの秒数を求める。それをさらに60で割ることで分を求める
    例:3605秒の場合、3605 % 3600 = 5となり、5秒が残る。→5 / 60 = 0.0833→0分

  • 秒→$S % 60は、与えられた秒数を60で割った余り、つまり60秒未満の残り秒数を求める
    例:3605秒の場合、3605 % 60 = 5なので、残りの5秒が求まる

Java

AOJ.java
import java.util.Scanner;
public class Main{
    public static void main(String[]args){
      Scanner sc=new Scanner(System.in);
      int s=sc.nextInt();
      
      int h=s/3600;
      int m=(s%3600)/60;
      int sec=s%60;
      
      System.out.println(h+":"+m+":"+sec);
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?