ウサギとカメのレースは、フィールドを実行すると、長方形の滑走路で、行われ、滑走路の端はどこに休むことができます。亀が前方毎分3メートル、前方ウサギ毎分9メートル移動することができます。その亀を振り返るために10分ごとに実行し、確かに亀を倒すこと、うさぎ亀遅すぎるランナーを、道路上で、より多くのカメ場合よりも自分自身を発見休む、30分ごとに休憩、または10分を実行し続け、非常に難しいとカメ、途切れることなく、実行されています。亀を想定し、ウサギは、同じ出発点で同じ時間を開始し始めたTの分は亀と速かったウサギの後、私が尋ねますか?
入力フォーマット:
行で入力整合所定の時間T(分)。
:出力フォーマット
行の結果出力の一致:亀の勝ち出力@ @ウサギが出力勝_ - 、出力を描く ;スペース、勝者の仕上げから、出力が続きます- 。
入力サンプル:
242
出力例:
@ _ @ 726
アクトワン:
従来の考え方
#include <stdio.h>
int main(){
int t,stop=0;
int x=0,y=0;
int k=0;
scanf("%d",&t);
if(t<=10){
x=3*t;
y=9*t;
}else{
x=30;
y=90;
stop=10;
while(k==0){
if(x<y){
if(t-stop<=30){
x=x+(t-stop)*3;
k=1;
}else{
x=x+90;
stop=stop+30;
}
}else{
if(t-stop<=10){
x=x+(t-stop)*3;
y=y+(t-stop)*9;
k=1;
}else{
x=x+30;
y=y+90;
stop=stop+10;
}
}
}
}
if(x>y){
printf("@_@ %d",x);
}else if(x==y){
printf("-_- %d",y);
}else{
printf("^_^ %d",y);
}
return 0;
}
方法2:
主なアイデアは、ウサギか否かを判定し、各状態のサブ状態にタイマーを設定され、残りの状態を使用することで、状態は経過時間を計算するために使用し、その後判断することにより埋め込み、状態変換を達成するため
#include<stdio.h>
int main(){
int r_distance = 0,t_distance = 0,T,t=0,state =1,r_count=0,t_count=0;
scanf("%d",&T);
while(t<T){//总计时器从0开始,到T-1为止经过了T分钟
t++;每分钟进行一次距离加和
if(state == 1){//兔子跑
r_count++;
r_distance += 9;
t_distance += 3;
if(r_count == 10){
if(r_distance > t_distance){
state = 0;//rest for 30 minutes
t_count = 0;兔子休息,乌龟计时器初始化
}else{
state = 1;//run for another 10 minutes
r_count = 0;兔子继续跑,兔子计时器初始化
}//需要返回确认t是否溢出
}else;
}else{//兔子休息
t_count++;
t_distance += 3;
if(t_count == 30){//兔子休息一轮了
if(r_distance > t_distance){
state = 0;//rest for another 30 minutes
t_count = 0;兔子继续休息,乌龟计时器初始化
}else{
state = 1;//run for 10 minutes
r_count = 0;//兔子开跑,兔子计时器初始化
}//需要返回确认t是否溢出
}else;
}
}
if(r_distance > t_distance){
printf("^_^ %d",r_distance);
}else if(r_distance < t_distance){
printf("@_@ %d",t_distance);
}else{
printf("-_- %d",t_distance);
}
return 0;
}
方法2:
から描く-画像を消去するには、時間
プロットされる
90分間のサイクルでは、90分ごとに、ウサギに等しく、亀を逃げました
#include <stdio.h>
int main()
{
int t;
scanf("%d", &t);
int t0 = t % 90;
if (t0 > 30 && t0 < 45 || t0 > 60 && t0 < 90)
printf("@_@ %d", t * 3); //乌龟赢
else if (t0 > 0 && t0 < 30 || t0 > 45 && t0 < 60)
{ //兔子赢
int s;
if (t0 > 0 && t0 < 10)
s = 9 * t0;
else if (t0 > 10 && t0 < 30)
s = 90;
else if (t0 > 45 && t0 < 50)
s = 90 + 9 * (t0 - 40);
else
s = 180;
printf("^_^ %d", t / 90 * 270 + s);
}
else
printf("-_- %d", t * 3); //平局
return 0;
}