Yj
こんにちは!!Cランク最終編です。☺️
STEP: 1 条件を満たす最小の自然数
下記の問題はwhile(true)を使いました。こちら参考にしました。
<?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"; ?>