下面兩段原始碼區別只有if else的部分,前者在oj上不能全部通過,后者就可以,琢磨很久都搞不通,請各位大佬康康
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
int n, v1, v2, t;
cin >> n >> v1 >> v2 >> t;
if (v1 * t >= v2 * t + n&&t<=1000) {
double final_t = (double)n / (v1 - v2);
cout << setprecision(2) << fixed << final_t<<endl;
}
else cout << "-1";
return 0;
}
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
int n, v1, v2, t;
cin >> n >> v1 >> v2 >> t;
double final_t = 1.0 * n / (v1 - v2);
if (final_t>t||final_t<0) {
cout << "-1";
}
else cout << fixed << setprecision(2) << final_t << endl;
return 0;
}
附題目:有兩輛車a,b相距n米,b在a的右側,并規定,向右為正方向,從時刻0開始,a,b分別以v1,v2(m/s)的速度行駛,問在時間t(s)內,兩車能否相遇,若能相遇,則輸出相遇時刻(單位s,四舍五入保留小數點后兩位小數),若不能則輸出-1。
輸入:一行,四個整數,n,v1,v2,t (0<=n,|v1|,|v2|,t<=1000)
輸出:一行,一個數,若能相遇(只要存在兩輛車距離為0的時刻,就算為相遇),輸出相遇時刻;若不能相遇,輸出-1
uj5u.com熱心網友回復:
第一種沒有考慮v1,v2為負數的情況uj5u.com熱心網友回復:
感覺沒問題啊,向右為正方向,以a車位原點,b在a右側,如果相遇,那么時間為t時a就會在b的右側了,也就是v1 * t >= v2 * t + nt<=1000經多次提交測驗下來加不加是無影響的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/152907.html
標籤:C++ 語言
