Programming_Konjac 2023-05-12 20:43 采纳率: 33.3%
浏览 19
已结题

啊,这样子做时间超限?

移动小车
时间限制:1秒 内存限制:128M
题目描述

小可想要通过编程来控制小车的移动。

小可打算先让小车在一条直线上移动。把这条直线看成一个数轴,设小车的起点为x0,第一秒移动距离为1,第二秒移动距离2,第三秒移动距离为3
假设小车马上要移动,距离为d。如果目前小车所在的坐标x是偶数,那么小车向左行驶,即坐标变为x−d。否则小车向右行驶,即坐标变为x+d。
小可给你小车最初的起点和时间,请你告诉小可这个时间小车的坐标。
输入描述
第一行一个正整数
t(1≤t≤10^4),代表有t组输入。

对于每组输入,有两个整数
x0 (−10^14 ≤x0 ≤10^14 )和n(0≤n≤10^14),代表小车的起点和时间。

输出描述

对于每组输入,输出小车的坐标。

样例输入

7
0 1
0 2
10 10
10 99
177 13
1 0
-1 1
样例输出

-1
1
11
110
190
1
0

我的代码是这样子的

#include<bits/stdc++.h>
using namespace std;
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        long long c,n;
        scanf("%lld %lld",&c,&n);
        for(int i=1; i<=n; i++){
            if(c%2==0){
                c=c-i;
            }
            else{
                c=c+i;
            }
        }
        printf("%lld\n",c);
    }
    return 0;
}

他只能得60分,怎么改啊,时间超限

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-12 23:28
    关注
    • 你可以看下这个问题的回答https://ask.csdn.net/questions/7555889
    • 除此之外, 这篇博客: C语言项目-后宫选妃系统-第三天-终结中的 其实上面都是今天上午就做好的,但是一直有点烦恼,因为在解决问题的过程中发现如果要去修改的话要对之前的代码大动干戈在这个项目里还好我变量名用的统一,因此只是改了一下每个子函数的返回类型和添加了一个判断,可是自己感觉还是不满意,这个项目算上注释总共420行,不大也不小,但是逻辑还算简单,由此可见在进行中大型项目之前进行构思,伪代码实现多重要!!不要像我这样一头扑上来就写代码,也算是吃了教训了,继续加油!奥利给! 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • /*
      后宫选妃系统
      六大模块:
          1.下旨选妃 -完成
              输入一名新妃子的名字,新增加一位新的妃子,然后其他妃子的宠爱度减 10 点
          2.翻牌宠幸-完成
              输入一名妃子的名字,翻牌宠幸其,增加其宠爱度10点,减少其他妃子宠爱度10点
          3.打入冷宫-完成
              输入一名妃子的名字,删除一位妃子,然后其他所有的妃子宠爱度加 10 点,若无此人则显示虚惊一场
          4.朕的爱妃呢-完成
              查找妃子,输入妃子的姓名并显示基本信息,被选中的妃子宠幸度加 10 点.其他妃子宠爱度减10点
          5.巡视后宫-完成
              巡视后宫,显示所有在宫妃子信息
          6.游戏规则判定-未
      妃子等级制(始皇制):
          一后
          三夫人
          九嫔
          二十七世妇
          八十一御女
      游戏规则:1.若有三名妃子宠爱度处于50以下则发生暴动,游戏结束
              2.若有人宠爱度达到100,镇压后宫,游戏结束
              3.每名妃子默认宠爱度70点
      */
      
      #include <stdio.h>
      #include <string.h>
      
      typedef struct concubine
      {
          char name[10];  //名字,最多十个字符
          int level;      //后宫等级
          int likability; //宠爱度
      } concu;
      
      //函数声明
      int addOne(concu *ptca, int *num);
      int chooseOne(concu *ptca, int *num);
      int forsakeOne(concu *ptca, int *num);
      int findOne(concu *ptca, int *num);
      void seeAll(concu *ptca, int *num);
      int judege_1(concu *ptca, int *num);
      int judege_2(concu *ptca, int *num);
      
      //   游戏规则判断计数器1   冷宫总人数
      int count = 0, leave = 0; //初始化总比不初始化好
      
      int main(void)
      {
          //存储conu的(X可变长)数组
          concu concus[31];
          int n = 0, *num = &n; //存储后宫妃子总数,使用指针方便更改!数字指针定义时需要&取地址
          concu *p;
      
          //后宫初始化,默认有三位妃子
          concu c1 = {"刘解忧", 1, 70};
          concu c2 = {"孙尚香", 1, 70};
          concu c3 = {"鱼幼薇", 1, 70};
          concus[0] = c1;
          concus[1] = c2;
          concus[2] = c3;
          *num = 3;
      
          //选妃系统界面控制
      
          int c, d; //控制,循环控制界面
          while (d)
          {
              p = concus; //初始化指针
              printf("-------后宫选妃系统-------\n\
                  四大模块:\n\
                      1.下旨选妃\n\
                      2.翻牌宠幸\n\
                      3.打入冷宫\n\
                      4.朕的爱妃呢\n\
                      5.后宫巡视\n\
                      6.退出选妃系统\n\
                  请输入序号选择功能:\n");
      
              scanf("%d", &c);
              switch (c)
              {
              case 1:
                  // printf("1\n");
                  addOne(p, num); //函数1
                  printf("输入任意键以继续.....\n");
                  scanf("%d", &c);
                  break;
              case 2:
                  // printf("2");
                  chooseOne(p, num); //函数2
                  printf("输入任意键以继续.....\n");
                  scanf("%d", &c);
                  break;
              case 3:
                  // printf("3");
                  forsakeOne(p, num); //函数3
                  printf("输入任意键以继续.....\n");
                  scanf("%d", &c);
                  break;
              case 4:
                  // printf("4");
                  findOne(p, num); //函数4
                  printf("输入任意键以继续.....\n");
                  scanf("%d", &c);
                  break;
              case 5:
                  // printf("5");
                  seeAll(p, num); //函数5
                  printf("输入任意键以继续.....\n");
                  scanf("%d", &c);
                  break;
              case 6:
                  printf("退出成功...\n");
                  c = 0;
                  break;
              default:
                  printf("小主,查无此功能啊!\n");
                  printf("输入任意键以继续.....\n");
                  scanf("%d", &c);
                  break;
              }
      
              d = judege_1(p, num) && judege_2(p, num);
              if (d == 0)
              {
                  printf("后宫暴动,游戏失败!");
                  printf("输入任意键以退出.....\n");
                  scanf("%d", &c);
              }
          }
      }
      
      //1.下旨选妃-输入一名新妃子的名字,新增加一位新的妃子,然后其他妃子的宠爱度减 10 点
      int addOne(concu *ptca, int *num)
      {
          //根据输入初始化一位妃子的信息
          char ch[10];
          int lev;
          printf("请输入妃子姓名,等级(1-5)(空号间隔):\n");
          scanf("%s %d", ch, &lev);
          concu c;
          strcpy(c.name, ch);
          c.level = lev;
          c.likability = 70;
          int n = *num; //临时数量控制器,操纵循环
          //使用遍历完成下旨选妃中的操作
          concu *p = ptca;
          for (int i = 0; i < n + 1; i++)
          {
              if (strcmp(p->name, ch) == 0)
              {
                  printf("皇上,%s已经在宫中了呢!\n", ch);
                  return 0;
              }
              p++;
          }
          for (int i = 0; i < n + 1; i++)
          {
      
              if (i < *num)
              {
                  ptca->likability -= 10;
                  ptca++;
              }
              else
              {
                  *ptca = c;
                  *num += 1; //总数加一
                  printf("恭喜选妃成功;妃子信息:姓名:%s,等级:%d,宠爱度:%d\n", ptca->name, ptca->level, ptca->likability);
                  // printf("当前后宫总人数:%d\n", *num);
              }
          }
      }
      
      //2.翻牌宠幸-输入一名妃子的名字,翻牌宠幸其,增加其宠爱度10点,减少其他妃子宠爱度10点
      int chooseOne(concu *ptca, int *num)
      {
          int n = *num; //临时变量,控制循环
          char a_name[10];
      
          //准备翻牌
          printf("皇上,可以翻牌了呢,输入想翻牌的妃子名字即可:\n");
          scanf("%s", a_name);
          // gets(name);
          // printf("1");
          // int i = 0;
          printf("当前即将被翻牌的妃子名称是 %s ...\n", a_name);
      
          //判断是否在宫中
          concu *p = ptca;
          int a_count = 0; //不同名妃子计数器
          for (int i = 0; i < n; i++)
          {
              // printf("%s --- %s\n", p->name, a_name);
              if (strcmp(p->name, a_name) != 0)
              {
                  a_count++;
              }
              // printf("%d\n", a_count);
              p++;
          }
          if (a_count == n)
          {
              printf(" %s 还不在宫中呢...\n", a_name);
              return 0;
          }
      
          printf("\n");
          for (int i = 0; i < n; i++)
          {
              if ((strcmp(a_name, (ptca->name)) == 0)) //判断名字是否相等,相等返回0
              {
                  ptca->likability += 10;
                  printf(" %s 翻牌成功!\n", ptca->name);
              }
              else
              {
                  ptca->likability -= 10;
                  printf("后宫徒生嫉妒, %s 宠爱度减少10点!\n", ptca->name);
              }
              ptca++; //指针指向下一个结构体
          }
      };
      
      //3.打入冷宫-输入一名妃子的名字,删除一位妃子,然后其他所有的妃子宠爱度加 10 点,若无此人则显示虚惊一场
      int forsakeOne(concu *ptca, int *num)
      {
          int n = *num; //临时变量,控制循环
          char a_name[10];
          concu c;
          strcpy(c.name, "0");
          c.level = 0;
          c.likability = 0;
      
          //准备翻牌
          printf("皇上,您要抛弃哪位妃子呢,输入妃子名字即可:\n");
          scanf("%s", a_name);
          // gets(name);
          // printf("1");
          int i = 0;
          printf("当前即将被即将被打入冷宫的妃子名称是 %s ...", a_name);
      
          //判断是否在宫中
          concu *p = ptca;
          int a_count = 0; //不同名妃子计数器
          for (int i = 0; i < n; i++)
          {
              // printf("%s --- %s\n", p->name, a_name);
              if (strcmp(p->name, a_name) != 0)
              {
                  a_count++;
              }
              // printf("%d\n", a_count);
              p++;
          }
          if (a_count == n)
          {
              printf(" %s 还不在宫中呢...\n", a_name);
              return 0;
          }
      
          printf("\n");
          for (int i = 0; i < n; i++)
          {
      
              if ((strcmp(a_name, (ptca->name)) == 0)) //判断名字是否相等,相等返回0
              {
                  *ptca = c;
              }
              else
              {
                  ptca->likability += 10;
                  printf("因 %s 被打入冷宫, %s宠爱度增加10点!\n", a_name, ptca->name);
              }
      
              ptca++; //指针指向下一个结构体
          }
      };
      
      //4.朕的爱妃呢-查找妃子,输入妃子的姓名并显示基本信息,被选中的妃子宠幸度加 10 点.其他妃子宠爱度减10点
      int findOne(concu *ptca, int *num)
      {
          int n = *num; //临时变量,控制循环
          char a_name[10];
          printf("皇上您要查找哪一位妃子呢,输入名字即可:\n");
          scanf("%s", a_name);
          printf("当前要查找的妃子是%s....\n", a_name);
      
         //判断是否在宫中
          concu *p = ptca;
          int a_count = 0; //不同名妃子计数器
          for (int i = 0; i < n; i++)
          {
              // printf("%s --- %s\n", p->name, a_name);
              if (strcmp(p->name, a_name) != 0)
              {
                  a_count++;
              }
              // printf("%d\n", a_count);
              p++;
          }
          if (a_count == n)
          {
              printf(" %s 还不在宫中呢...\n", a_name);
              return 0;
          }
      
          //在遍历中寻找符合要求的妃子并打印信息
          for (int i = 0; i < n; i++)
          {
      
              if ((strcmp(a_name, (ptca->name)) == 0))
              {
                  printf("姓名\t等级\t宠爱度\t\n");
                  printf("%s\t", ptca->name);
                  //打印等级,并用中文替代
                  switch (ptca->level)
                  {
                  case 1:
                      printf("御女\t");
                      break;
                  case 2:
                      printf("世妇\t");
                      break;
                  case 3:
                      printf("嫔\t");
                      break;
                  case 4:
                      printf("夫人\t");
                      break;
                  case 5:
                      printf("后\t");
                      break;
                  default:
                      printf("0\t");
                      break;
                  }
                  //打印宠爱度
                  printf("%d\n", ptca->likability);
              }
              ptca++;
          }
      };
      
      //5.巡视后宫,打印所有妃子信息,跳过被打入冷宫的妃子信息
      void seeAll(concu *ptca, int *num)
      {
          int n = *num; //临时变量控制循环
          printf("-----------------------------------------\n");
          printf("姓名\t等级\t宠爱度\t\n");
          for (int i = 0; i < n; i++)
          {
              if (ptca->level != 0)
              {
                  //打印姓名
                  printf("%s\t", ptca->name);
                  //打印等级,并用中文替代
                  switch (ptca->level)
                  {
                  case 1:
                      printf("御女\t");
                      break;
                  case 2:
                      printf("世妇\t");
                      break;
                  case 3:
                      printf("嫔\t");
                      break;
                  case 4:
                      printf("夫人\t");
                      break;
                  case 5:
                      printf("后\t");
                      break;
                  default:
                      printf("0");
                      break;
                  }
                  //打印宠爱度
                  printf("%d\n", ptca->likability);
              }
              ptca++;
          }
      };
      
      //6.1.若有三名妃子宠爱度处于50以下则发生暴动,游戏结束
      int judege_1(concu *ptca, int *num)
      {
          int n = *num; //临时变量,控制循环
          count = 0;    //计数器清0
      
          //循环  计数器
          for (int i = 0; i < n; i++)
          {
              if (ptca->likability < 50)
              {
                  count++;
              }
          }
      
          //判断
          if (count >= 3)
          {
              return 0;
          }
          else
          {
              return 1;
          }
      }
      
      //6.2.若有人宠爱度达到100,镇压后宫,游戏结束
      int judege_2(concu *ptca, int *num)
      {
          int n = *num; //临时变量,控制循环
      
          //循环  计数器
          for (int i = 0; i < n; i++)
          {
              if (ptca->likability >= 100)
              {
                  return 0;
              }
          }
          return 1;
      }
      
      
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月30日
  • 创建了问题 5月12日

悬赏问题

  • ¥20 Java-Oj-桌布的计算
  • ¥15 请问如何在openpcdet上对KITTI数据集的测试集进行结果评估?
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路