備忘録

Paiza CランクレベルアップメニューPHP『シミュレーション』編 解答。

Yj
こんにちは!!Cランク最終編です。☺️

STEP: 1 条件を満たす最小の自然数

下記の問題はwhile(true)を使いました。こちら参考にしました。

これで完璧!PHP while文の基礎!breakとcontinueの違いも紹介

<?php
 $n = 10000;
   while(true){
       if($n % 13 == 0){
           break;
       }
       $n +=1;
   }
   echo $n . "\n";
?>

 

STEP: 2 シミュレーションの練習

<?php
 $n = trim(fgets(STDIN));
    list($a, $b) = explode(" ", trim(fgets(STDIN)));
    $p_total = 1;//初期数
    $k_total = 1;//初期数
    $count = 0;//何回回ったか確認
    while(true){
        $count +=1;
        //paizaのターン(順番)
        $give_kiri = $p_total * $a;//霧島にあげる数
        $k_total = $k_total + $give_kiri;//霧島トータル
        if($k_total > $n){//霧島京子の数がnより大きくなるまで繰り返します。
            break;
        }
        //kirishimaのターン(順番)
        $give_pai = $k_total % $b;//paizaにあげる数
        $p_total = $p_total + $give_pai;//paizaトータル
        
    }
    echo $count . "\n";//手続きが終わったときのパイザ君の操作回数
?>

 

FINAL問題 シミュレーション

<?php
   //入力例1の場合
   $h = trim(fgets(STDIN));// 7HP
   $p_attack = array(0, 1, 1);//paizaの1回目と2回目の攻撃と空箱用意
   $m_attack = array(0, 1, 1);//モンスターの1回目と2回目の攻撃と空箱用意
   $dmg = 2;//ダメージ2は確定なので受けてる状態からスタート
   $count = 2;//2回ダメージ受けたところからカウント
   while($dmg < $h){ //$dmg<7体力が7を超えたらループを抜ける
       $p_attack[0] = $p_attack[1];
       $p_attack[1] = $p_attack[2];
       $m_attack[0] = $m_attack[1];
       $m_attack[1] = $m_attack[2];
       
       $p_attack[2] = $m_attack[0] + $m_attack[1];
       $m_attack[2] = $p_attack[0] + 2 * $p_attack[1];
       
       $dmg +=$m_attack[2];
       $count++;//モンスターに何度攻撃されたかカウント
       
   }
   echo $count . "\n";
?>

 

-備忘録

© 2024 Yj Blog Powered by AFFINGER5