【PTA】7-39兎(20分)

ウサギとカメのレースは、フィールドを実行すると、長方形の滑走路で、行われ、滑走路の端はどこに休むことができます。亀が前方毎分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;
}
公開された48元の記事 ウォンの賞賛0 ビュー303

おすすめ

転載: blog.csdn.net/weixin_46399138/article/details/105414218