鱼C论坛

 找回密码
 立即注册
查看: 5814|回复: 37

[已解决]梦想护卫舰 第34期 递增运算【原创】

[复制链接]
发表于 2023-4-1 12:35:45 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 元豪 于 2023-5-7 17:02 编辑

梦想护卫舰 第34期 递等运算


梦想护卫舰终于继续出发

这时,高山发现,船上的很多人竟然不会递等运算!!!这可不行,所以他来拜托你帮忙教学一下。


                               
登录/注册后可看大图


题目描述

给定一个混合算式,输出递等运算的过程。

先乘除后加减。

举一个例子:

  1. 3+10*10-15/3
  2. =3+100-15/3
  3. =3+100-5
  4. =103-5
  5. =98
复制代码

除法向下取整。


                               
登录/注册后可看大图


输入格式

输入 1 行,1 个混合算式。


                               
登录/注册后可看大图


输出格式

输出所有的过程。

注意!第一行要输出原算式,前面要输出 1 个空格。


                               
登录/注册后可看大图


输入输出样例

输入 #1

  1. 3+10*10-15/3
复制代码


输出 #1

  1. 3+10*10-15/3
  2. =3+100-15/3
  3. =3+100-5
  4. =103-5
  5. =98
复制代码


输入 #2

  1. 1+1+5+5+6+9+7
复制代码


输出 #2

  1. 1+1+5+5+6+9+7
  2. =2+5+5+6+9+7
  3. =7+5+6+9+7
  4. =12+6+9+7
  5. =18+9+7
  6. =27+7
  7. =34
复制代码


输入 #3

  1. 10+10*10*10/100
复制代码


输出 #3

  1. 10+10*10*10/100
  2. =10+100*10/100
  3. =10+1000/100
  4. =10+10
  5. =20
复制代码



                               
登录/注册后可看大图


数据范围

对于 100% 的数据,保证算式中数字个数 2 <= N <= 1000 且单个数字 1 <= N_i <= 10^9 。

注:本题原创,链接:https://www.luogu.com.cn/problem/T326736

图一时之快先看答案,你将失去一次锻炼的机会!


                               
登录/注册后可看大图


答案与解析

游客,如果您要查看本帖隐藏内容请回复


最佳答案
2023-4-1 12:35:46
听说这里有鱼币可以领:
  1. #include <bits/stdc++.h>
  2. using namespace std;

  3. char s[20001], chr[1003];
  4. __int128 num[1004], imposs = 1145141919810;
  5. long long n, nums, chrs, rn;

  6. void output(__int128 n) {
  7.         if (n < 0) {
  8.                 n = labs(n);
  9.                 printf("-");
  10.         }
  11.         if (n == 0) printf("0");
  12.         else {
  13.                 char ans[40];
  14.                 int t = 0;
  15.                 while (n) {
  16.                         ans[++t] = n % 10 + '0';
  17.                         n /= 10;
  18.                 }
  19.                 for (int i = t; i >= 1; --i) {
  20.                         printf("%c", ans[i]);
  21.                 }
  22.         }
  23. }

  24. void output() {
  25.         printf("=");
  26.         int tot = 0, chtot = 0;
  27.         for (int i = 1; i <= nums; ++i) {
  28.                 if (num[i] != imposs) num[++tot] = num[i];
  29.         }
  30.         for (int i = 1; i <= chrs; ++i) {
  31.                 if (chr[i] != 0) chr[++chtot] = chr[i];
  32.         }
  33.         chrs = chtot;
  34.         nums = tot;
  35.         for (int i = 1; i <= nums; ++i) {
  36.                 output(num[i]);
  37.                 if (i != nums) {
  38.                         printf("%c", chr[i]);
  39.                 }
  40.         }
  41.         printf("\n");
  42. }

  43. int main() {
  44.         scanf("%s", s + 1);
  45.         n = strlen(s + 1);
  46.         __int128 t = 0;
  47.         for (int i = 1; i <= n; ++i) {
  48.                 if (s[i] >= '0' && s[i] <= '9') {
  49.                         t = t * 10 + (s[i] - '0');
  50.                 } else {
  51.                         num[++nums] = (__int128)t;
  52.                         chr[++chrs] = s[i];
  53.                         t = 0;
  54.                 }
  55.         }
  56.         num[++nums] = (__int128)t;
  57.         printf(" %s\n", s + 1);
  58.         while (nums != 1) {
  59.                 int pos = 1;
  60.                 for (int i = 1; i <= chrs; ++i) {
  61.                         if (chr[i] == '*' || chr[i] == '/') {
  62.                                 pos = i;
  63.                                 break;
  64.                         }
  65.                 }
  66.                 __int128 lv = num[pos], rv = num[pos + 1];
  67.                 num[pos + 1] = imposs;
  68.                 switch (chr[pos]) {
  69.                         case '+':
  70.                                 num[pos] = lv + rv;
  71.                                 break;
  72.                         case '-':
  73.                                 num[pos] = lv - rv;
  74.                                 break;
  75.                         case '*':
  76.                                 num[pos] = lv * rv;
  77.                                 break;
  78.                         case '/':
  79.                                 num[pos] = lv / rv;
  80.                                 break;
  81.                         default:
  82.                                 exit(1);
  83.                 }
  84.                 chr[pos] = 0;
  85.                 output();
  86.         }
  87. }
复制代码

评分

参与人数 2荣誉 +3 鱼币 +1 收起 理由
myd0313 + 1 + 1 鱼C有你更精彩^_^
zhangjinxuan + 2 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-13 10:52:59 | 显示全部楼层
看看答案
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-22 20:16:22 | 显示全部楼层
zhangjinxuan 发表于 2023-5-22 19:12
听说这里有鱼币可以领:

哇!C++也行!6666666666666666666666666666666666666666666
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-22 19:25:37 | 显示全部楼层
zhangjinxuan 发表于 2023-5-22 19:12
听说这里有鱼币可以领:

6
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-20 12:25:02 | 显示全部楼层
歌者文明清理员 发表于 2023-4-18 17:25
chatgpt只说了个,python3代码实现,然后啥也不说,是不是崩溃了

说“继续”
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-18 17:25:39 | 显示全部楼层
元豪 发表于 2023-4-2 12:24
为什么我改不了主题标题??????????

chatgpt只说了个,python3代码实现,然后啥也不说,是不是崩溃了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-17 19:10:19 | 显示全部楼层

test
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-16 20:02:43 | 显示全部楼层
元豪 发表于 2023-4-16 20:01
  就是这样  

开个玩笑

你咋知道的?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-16 20:02:11 | 显示全部楼层
谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-16 20:01:13 | 显示全部楼层
sfqxx 发表于 2023-4-16 17:08
删除线怎么打出来???


  就是这样  

开个玩笑

  1. 【s】要加删除线的内容【/s】
复制代码


将【】替换为[]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-16 17:08:10 | 显示全部楼层
删除线怎么打出来???
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-4 19:50:43 | 显示全部楼层
陈尚涵 发表于 2023-4-4 19:44
emm用python做算法题
python效率的话,emm一言难尽

通过了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-4 19:44:08 | 显示全部楼层
emm用python做算法题
python效率的话,emm一言难尽
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-4 19:11:26 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-2 19:30:07 | 显示全部楼层

那你帮忙hack一下谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-2 19:07:02 | 显示全部楼层
我看是你不会递增计算
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-2 14:06:23 | 显示全部楼层
鱼cpython学习者 发表于 2023-4-2 14:05
我的WA和你的一毛一样

大概率标程问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-2 14:05:40 | 显示全部楼层
zhangjinxuan 发表于 2023-4-1 12:51
不好意思,我是WA,不是Tle:
https://www.luogu.com.cn/record/106596730

我的WA和你的一毛一样
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-2 12:24:15 | 显示全部楼层


为什么我改不了主题标题??????????
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-2 11:23:37 | 显示全部楼层
元豪 发表于 2023-4-2 11:21
啊这......谢谢提醒

主题的题目也没改
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-2 11:21:33 | 显示全部楼层
歌者文明清理员 发表于 2023-4-2 11:03
题目错了,是递等不是递增

啊这......谢谢提醒
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-23 05:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表