美文网首页
2019-01-21

2019-01-21

作者: 顾庭燎 | 来源:发表于2019-01-21 15:42 被阅读0次
  • 完成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
      
      

相关文章

网友评论

      本文标题:2019-01-21

      本文链接:https://www.haomeiwen.com/subject/zqvcjqtx.html