@java蓝桥杯グループBの演習基本的な演習(30)BASIC-024カメとウサギのレーステストの要件キーワード:配列シミュレーション

Java Blue Bridge CupグループBの演習基本的な演習(30)BASIC-024亀と野ウサギのレーステストキーワード:配列シミュレーション

問題の説明

この世にはいろいろな種類のうさぎや亀がいるといわれていますが、調査の結果、すべてのうさぎと亀には、人種のような共通の特徴があることがわかりました。そのため、カメとウサギの種族は常に世界のあらゆる場所で発生しています。Xiaohuaはこれに非常に興味があるので、さまざまなウサギとカメの種族を研究することにしました。彼は、ウサギはカメよりも速く走るが、よく知られている問題を誇りにして怠惰であることを発見したので、カメとのゲームでは、ウサギが1秒後にtメートル以上先にくると、止まります。 s秒間休憩します。さまざまなウサギでは、tとsの値は異なりますが、すべてのカメは同じです。それらは最後まで止まりません。
  ただし、一部のゲームは非常に長く、プロセス全体を監視するには時間がかかります。Xiaohuaは、各ゲームの開始後にウサギとカメのデータが記録されている限り、ウサギの速度はv1です(つまり、ウサギは毎秒v1メートル走ることができます)。速度v2、対応するウサギのt、s値、およびトラックの長さl-は、ゲームの結果を予測できます。しかし、Xiaohuaは怠惰で、手計算でゲームの結果を推測したくなかったので、清華大学のコンピューター学部の高レベルの学生があなたに助けを求めているのを見つけました。ゲームデータの入力用のプログラムを作成してくださいv1 v2、t、s、l、ゲームの結果を予測します。
入力形式の
  入力は1行のみで、スペースで区切られた5つの正の整数v1、v2、t、s、lを含みます。ここで、(v1、v2 <= 100; t <= 300; s <= 10; l <= 10000およびこれはv1とv2の公倍数です。
出力形式に
  は2行が含まれます。最初の行は一致結果を出力します。大文字の「T」、「R」、または「D」は、亀が勝った、ウサギが勝った、または両方が同時に到着したことを意味します終わり。
  2行目は正の整数を出力し、勝者(または両方)がフィニッシュラインに到達するまでの時間(秒単位)を示します。
サンプル入力
10 5 5 2 20
サンプル出力
D
4
サンプル入力
10 5 5 1 20
サンプル出力
R
3
サンプル入力
10 5 5 3 20
サンプル出力
T
4


//注意看这里其实如果按要求来是过不了的,因为s的值为15,很明显大于10了,所以应该不满足条件才对,但是下面却是给出的正确参考答案???!!我当时整个人都蒙了
10 3 20 15 3450
T
1150

実際、私はこの場所に問題があると思います:これはsの制限条件です。本当にsを10に制限すると、合格できない一連のテストデータが存在しますが、15未満にしか変更できません。 ):

コード:

import java.util.Scanner;
public class 龟兔赛跑测试 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int v1=sc.nextInt();
		int v2=sc.nextInt();
		int t=sc.nextInt();
		int s=sc.nextInt();
		int l=sc.nextInt();//v1,v2<=100;t<=300;s<=10;l<=10000且为v1,v2的公倍数
		if(v1<=100&&v1>0&&v2<=100&&v2>0&&t<=300&&t>0&&s>0&&s<=15&&l>0&&l<=10000&&l%v1==0&&l%v2==0) {
			int sumR=0;int sumT=0;
			int timeR=0;int timeT=0;
			OUT:
			for(int i=0;i<10000;i++){
				timeR++;timeT++;
				sumR+=v1;
				sumT+=v2;
				if(sumR>=l|sumT>=l) {
					if(sumR==sumT) {
						System.out.println("D");
						System.out.println(timeR);
					}else if(sumR>sumT) {
						System.out.println("R");
						System.out.println(timeR);
					}else{
						System.out.println("T");
						System.out.println(timeT);
					}
					break;
				}
				if(sumR-sumT>=t) {
					for(int j=0;j<s;j++) {
						timeT++;timeR++;
						sumT+=v2;
						if( sumT>=l) {
							System.out.println("T");
							System.out.println(timeT);
							break OUT;
						}
					}
				}
			}
		}
	}
}
41件のオリジナル記事を公開 いいね1 訪問1291

おすすめ

転載: blog.csdn.net/DAurora/article/details/105524786