-
完成2018-12-1小明上学,首次提交60分,经检查后发现错误出在我直接把红灯时间固定为了30秒,而忽视了其时间是由外部输入的,修改后提交通过。
-
附上源码
#include <iostream> using namespace std; int main() { int r, y, g; cin >> r >> y >> g; int n, sum = 0; cin >> n; for (int i = 0; i < n; i++) { int k, t; cin >> k >> t; switch (k) { case 0: { sum += t; break; } case 1: { sum += t; break; } case 2: { sum += (t + r); break; } case 3: { break; } } } cout << sum; } //30 3 30 //8 //0 10 //1 5 //0 11 //2 2 //0 6 //0 3 //3 10 //0 3
-
-
完成2018-12-2小明放学,首次提交60分,经检查发现是数据类型设置错误,题中给出的n的范围是十的五次方,这样就可能使sum的数据范围超过int型的范围,所以应该将其数据类型设置为long long型,修改后提交通过。
-
附上源码
#include <iostream> using namespace std; int tim(long long, long long, long long); long long r, y, g; int main() { long long n, sum = 0; cin >> r >> y >> g; cin >> n; for (int i = 0; i < n; i++) { long long k, t; cin >> k >> t; sum += tim(k, t, sum); } cout << sum; } int tim(long long k, long long t, long long sum) { if (k == 0) { return t; } else if (k == 1) { if (sum <= t) { return t - sum; } else { int tc = (sum - t) % (r + y + g); if (tc <= g) { return 0; } else { return r + g + y - tc; } } } else if (k == 2) { if (sum <= t) { return t - sum + r; } else { int tc = (sum - t) % (r + y + g); if (tc < r) { return r - tc; } else if (tc >= r && tc <= r + g) { return 0; } else { return 2 * r + y + g - tc; } } } else { if (sum <= t) { return 0; } else { int tc = (sum - t) % (r + y + g); if (tc <= y) { return y - tc + r; } else if (tc > y && tc <= y + r) { return y + r - tc; } else { return 0; } } } } //30 3 30 //8 //0 10 //1 5 //0 11 //2 2 //0 6 //0 3 //3 10 //0 3
-
网友评论