洛谷 P2715 ccj与zrz之在回家的路上 艰辛的解题过程

news2024/9/23 7:28:25

时隔将近两个月,我回来了哈哈哈哈哈哈哈哈哈。

看着一周小结的排名越来越低太难受了,于是我回来继续写文章

今天这道题其实不难,重点是说一下解题过程中遇到的麻烦和坑点

题目描述

给出一个算式(a*b=c或a/b=c或a+b=c或a-b=c)其中a,b,c是三个数字,但是其中有一个是问号,表示未知,请你求出未知的那一个量。

输入格式

只有一行,一个算式(a*b=c或a/b=c或a+b=c或a-b=c),可能会有多余的空格

输出格式

“?”代表的数字,保留2位小数。

输入输出样例

输入 #1

1+1    =                     ?

输出 #1

2.00

输入 #2

1-?                     =0

输出 #2

1.00

输入 #3

2*?=                         6

输出 #3

3.00

输入 #4

8/5=

输出 #4
1.60

这题看起来非常的简单,是一道大模拟,那我们就先把做题流程理出来

  1. 去空格
  2. 择出=
  3. 择出+-*/
  4. 切分出三个数,找出哪个是问号
  5. 枚举求值

这里有一个小小的建议

就是敲完每一步的代码后,输出测试信息检查一下,这部分是否正确,免得100多行最后去debug,那样很麻烦。

以上5个步骤,应该很好模拟出来。

# include <iostream>
# include <cstdio>
# include <cstring>
# include <iomanip>
using namespace std;
# define int long long
string s;
int a,b,c,flag;
int fuhao;
int fenge;
int fuhaowei;
double sum;
signed main(){
    getline(cin,s);
    for (int i=0;i<s.length();i++){
        if (s[i]==' '){
            s.erase(i,1);
            i--;
        }
    }
    int len=s.length();
    
    for (int i=0;i<len;i++){
        if (s[i]=='+'){
            fuhao=1;
            fuhaowei=i;
        }else if (s[i]=='-'){
            fuhao=2;
            fuhaowei=i;
        }else if (s[i]=='*'){
            fuhao=3;
            fuhaowei=i;
        }else if (s[i]=='/'){
            fuhao=4;
            fuhaowei=i;
        }
    }
    for (int i=0;i<len;i++){
        if (s[i]=='='){
            fenge=i;
        }
    }
    for (int i=0;i<fuhaowei;i++){
        if (s[i]=='?'){
            a=-1;
        }else{
            a*=10;
            a+=(s[i]-'0');
        }
    }
    for (int i=fuhaowei+1;i<fenge;i++){
        if (s[i]=='?'){
            b=-1;
        }else{
            b*=10;
            b+=(s[i]-'0');
        }
    }
    for (int i=fenge+1;i<len;i++){
        if (s[i]=='?'){
            c=-1;
        }else{
            c*=10;
            c+=(s[i]-'0');
        }
    }
    //cout<<fuhaowei<<" "<<fenge;
    //cout<<a<<" "<<b<<" "<<c<<" ";

    if (a==-1){//第一个数为?
        if (fuhao==1){
            sum=c-b;
        }else if (fuhao==2){
            sum=c+b;
        }else if (fuhao==3){
            sum=1.00*c/b;
        }else if (fuhao==4){
            sum=c*b;
        }
    }else if (b==-1){
        if (fuhao==1){
            sum=c-a;
        }else if (fuhao==2){
            sum=a-c;
        }else if (fuhao==3){
            sum=1.00*c/a;
        }else if (fuhao==4){
            sum=1.00*a/c;
        }
    }else{
        if (fuhao==1){
            sum=a+b;
        }else if (fuhao==2){
            sum=a-b;
        }else if (fuhao==3){
            sum=a*b;
        }else if (fuhao==4){
            sum=a*1.00/b;
        }
    }
    printf("%.2lf\n",sum);
    return 0;
}

模拟之后还不AC的继续看下去

如果按照我的思路完完整整的写下来了的话,大概率是42分或8分

本蒟篛遇到这个情况的时候,一开始还很镇静,可当我一顿乱改之后,从42分掉到了8分,心里一下子就不平静了。随后便开始了胡乱的尝试,自己造的测试点也通通能AC。这一下可给我整不会了。于是我进入了这题的讨论版,看到了这样一个帖子:

我就知道这题的坑不简单

???

此时我才意识到此题的毒瘤,输入的时候除了该有的字符和空格外,还有一堆其他的字符。

但令我震惊的是题目和样例中居然没有说明???!!! 

愿所有人能避坑成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/908681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解JMM和并发三大特性

并发和并行 并发和并行的目的都是为了使CPU的使用率最大化&#xff0c;这两个概念也是我们容易混淆的。 并行&#xff08;Parallel&#xff09; 并行是指在同一时刻&#xff0c;有多条指令在多个处理器上同时执行&#xff0c;因为并行要求程序能同时执行多个操作&#xff0c…

APP上线为什么要提前部署安全产品呢?

一般平台刚上线或者日活跃量比较高的时候&#xff0c;很容易成为攻击者的目标&#xff0c;服务器如果遭遇黑客攻击&#xff0c;资源耗尽会导致平台无法访问&#xff0c;业务也无法正常开展&#xff0c;服务器一旦触发黑洞机制&#xff0c;就会被拉进黑洞很长一段时间&#xff0…

MySQL下载安装配置

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

微信聊天记录词云制作

文章目录 一&#xff1a;聊天记录传输至电脑二&#xff1a;聊天记录破解三&#xff1a;聊天记录分析&#xff08;1&#xff09;字段含义&#xff08;2&#xff09;词频统计和词云制作&#xff08;3&#xff09;效果展示 一&#xff1a;聊天记录传输至电脑 在雷电模拟器中打开r…

独家|2023 Q2业内3D-NAND研发动态最全一览表

有粉丝私信&#xff0c;希望可以看到业内比较全的3D-NAND动态。经过小编的找寻&#xff0c;结合TechInsight的信息以及各家原厂官网消息&#xff0c;整理出2023 Q2业内3D-NAND研发动态最全一览表&#xff0c;供大家参考。 声明&#xff1a;本表格均为公开信息整理&#xff0c;如…

AI提示语-让每个人都能轻松使用 AI,提高 10 倍生产力

AI提示语简介 无需代码&#xff0c;连接模型快速构建AI应用。让每个人都能轻松使用 AI&#xff0c;提高 10 倍生产力。 AI提示语介绍 AI 提示语致力于为各类AI应用搭建、运行和推广的基础平台&#xff0c;让广大用户都能将AI的力量运用到实际的工作与生活场景中。 AI提示语…

国产SSD崛起!2023年发展趋势解析

随着科技的不断进步&#xff0c;SSD已经成为了现代计算机不可或缺的一部分。而在这个市场中&#xff0c;国产SSD也逐渐崭露头角。 国产SSD市场份额继续扩大 根据市场调研机构IDC的数据显示&#xff0c;2023年中国SSD市场份额排名前五的厂商中有四家是国内企业&#xff0c;分别是…

【第三阶段】kotlin语言的内置函数apply

1.普通方式输出一个字串的信息 fun main() {var info"Ktolin"//普通方式println("info的长度为${info.length}")println("info的最后一个字符${info[info.length-1]}")println("info全转换为大写${info.toLowerCase()}") }执行结果 …

Go 语言在 Windows 上的安装及配置

1. Go语言的下载 Golang官网&#xff1a;All releases - The Go Programming Language Golang中文网&#xff1a;Go下载 - Go语言中文网 - Golang中文社区 两个网站打开的内容只有语言不同而已&#xff0c;网站上清晰的标注了不同操作系统需要对应安装哪个版本&#xff0c;其中…

对类加载过程的通俗理解

开局一张图 一般来说&#xff0c;类加载分为&#xff1a;加载、验证、准备、解析、初始化 5个步骤。 各阶段略叙 1、加载 将.class文件加载进内存 2、验证 判断.class文件的格式是否正确 3、准备 为类的静态变量分配内存并设置初始值。只有b、c会在此阶段进行处理。 //…

移动端的帮助中心该如何设计?

随着移动互联网的发展&#xff0c;APP作为一种高效的营销工具&#xff0c;已经成为企业抢占移动端流量的重要手段。同时随着智能手机用户规模不断扩大&#xff0c;以及用户的消费逐渐向移动端转移&#xff0c;使得越来越多企业认识到 APP与其营销模式是成为互补的关系&#xf…

数据驱动未来:基于状态的维修在工业领域的前景

随着科技的不断进步&#xff0c;工业界正迎来一场革命&#xff0c;而其中的一颗明星是基于状态的维修&#xff08;CBM&#xff09;。这一技术正在改变工业维护的方式&#xff0c;通过实时数据分析和人工智能驱动&#xff0c;使维护从被动的、计划性的转变为主动的、预测性的。本…

基于多元宇宙算法优化的BP神经网络(预测应用) - 附代码

基于多元宇宙算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于多元宇宙算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.多元宇宙优化BP神经网络2.1 BP神经网络参数设置2.2 多元宇宙算法应用 4.测试结果&#xff1a;5…

3种清除logo的方法,使其干净整洁 自然无痕

信息爆炸的时代&#xff0c;我们每天都和图片打交道经常会遇到一些带有水印的图片。这些水印可能是品牌的标志或者是版权信息&#xff0c;但有时候它们会干扰到我们对图片的欣赏和使用。那么&#xff0c;怎么去掉图片logo水印呢? 毕竟影响图片美感&#xff0c;使用也不方便&a…

torch一些操作

Pytorch文档 Pytorch 官方文档 https://pytorch.org/docs/stable/index.html pytorch 里的一些基础tensor操作讲的不错 https://blog.csdn.net/abc13526222160/category_8614343.html 关于pytorch的Broadcast,合并与分割,数学运算,属性统计以及高阶操作 https://blog.csd…

Spring的基本概念

前言 Spring 究竟是什么&#xff1f;其实Spring简单来说就是一个包含众多工具方法的IOC容器。 那么什么是IOC呢&#xff1f; IoC Inversion of Control 翻译成中⽂是“控制反转”的意思. 既然Spring 是⼀个IoC&#xff08;控制反转&#xff09;容器&#xff0c;重点还在“容…

深度学习基本理论下篇:(梯度下降/卷积/池化/归一化/AlexNet/归一化/Dropout/卷积核)、深度学习面试

18、 请说明Momentum、AdaGrad、Adam梯度下降法的特点 Momentum、AdaGrad、Adam是针对SGD梯度下降算法的缺点的改进算法。在SGD算法中&#xff0c;如果函数的形状非均向&#xff08;参数大小差异较大&#xff09;&#xff0c;SGD的搜索路径会呈“之字形”移动&#xff0c;搜索…

代码随想录打卡—day21—【二叉树】— 8.21

1 530. 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差 想法&#xff1a;先直接中序遍历&#xff08;升序的序列&#xff09;过程中相邻两个数的差值取min&#xff0c;自己写一次AC代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* …

JMETER基本原理

Jmeter基本原理是建立一个线程池&#xff0c;多线程运行取样器产生大量负载&#xff0c;在运行过程中通过断言来验证结果的正确性&#xff0c;可以通过监听来记录测试结果&#xff1b; JMETER是运行在JVM虚拟机上的&#xff0c;每个进程的开销比loadrunner的进程开销大&#x…

基于springboot+vue的食材商城(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…