当前位置: 首页 > article >正文

蓝桥杯-不完整的算式

问题描述

小蓝在黑板上写了一个形如 AopB=CAopB=C 的算式,其中 AA、BB、CC 都是非负整数,opop 是 +、-、*、/+、-、*、/(整除)四种运算之一。不过 AA、opop、BB、CC 这四部分有一部分被不小心的同学擦掉了。

给出这个不完整的算式,其中被擦掉的部分(被擦掉的部分是被完整的擦掉,不会出现留下若干位数字的情况)用 ?? 代替。请你输出被擦掉的部分。

输入描述

输入只有一行,包含一个字符串代表如上文所述的不完整的算式。

输出描述

如果被擦掉的部分是 AA、BB、CC 之一,请输出一个整数代表答案。如果被擦掉的部分是 opop,请输出+、-、*、/+、-、*、/四个字符之一代表答案。

样例输入1

1+?=2

样例输出1

1

样例输入2

10?3=3

样例输出2

/

评测用例规模

对于 20%20% 的数据,被擦掉的部分是 CC。

对于 40%40% 的数据,被擦掉的部分是 opop。

对于 100%100% 的数据,算式长度不超过 1010,不包含空格。算式中出现的整数不包含多余的前导 00。输入保证合法且有唯一解。

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M
PyPy33s256M
Go3s256M
JavaScript3s256M

思路:

1.先将算式从=中间进行拆分,拆分成两个字符串

2.再判断?所在的位置

(1)判断 ?在C的部分

        直接将对应的部分进行转换后进行运算

  (2 )判断 ?在非C(A,op,B)的部分

        在A的位置,再判断运算符所在的索引,再拆出来进行运算

        在op的位置,再判断运算符所在的索引,再拆出来进行运算

        在B的位置,再判断运算符所在的索引,再拆出来进行运算

基础语法:

1//将输入的字符串的整行都提取
String s=scan.nextLine();2//将字符串按照等号两边进行分割
String[] s1 =s.split("=");3//字符串string的匹配:
C.equals("?");4//字符的匹配:
s.charAt(i)=='?';5//截取字符串,例子:uiasc
s.substring(1,3);
//substring(1,3)=>ia6//字符串转换成整形数
parseInt("2122");

我的代码:

import java.util.Scanner;
import java.util.Arrays;import static java.lang.Integer.parseInt;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//先全部输入字符串//进行拆解分割,先分为等号左右两部分,再把等号的左边部分再单独分割成三个部分//数字格式为A op B=C//要分解成A,op,B,C//先读取一整行的字符串:2+2=4String s=scan.nextLine();String[] s1 =s.split("=");//变成:[2+2,4]String s2=s1[0];String C=s1[1];//当?出现在C的位置int id =0;if(C.equals("?")){//寻找运算符的位置for(int i=0;i<s1[0].length();i++){if(s2.charAt(i)<'0'||s2.charAt(i)>'9'){id=i;break;}}int A= parseInt(s2.substring(0,id));int B= parseInt(s2.substring(id+1,s2.length()));String op=s2.substring(id,id+1);if(op.equals("+")) System.out.print(A+B);if(op.equals("-")) System.out.print(A-B);if(op.equals("*")) System.out.print(A*B);if(op.equals("/")) System.out.print(A/B);}else{//当?出现在A,op,B的位置//先找到?的位置for(int i=0;i<s2.length();i++){if(s2.charAt(i) == '?'){id =i;break;}}//当?出现在A的位置时:?+9=10if(id ==0){String op=s2.substring(1,2);int B=parseInt(s2.substring(2,s2.length()));int C1=parseInt(C);if(op.equals("+")) System.out.print(C1-B);if(op.equals("-")) System.out.print(C1+B);if(op.equals("*")) System.out.print(C1/B);if(op.equals("/")) System.out.print(C1*B);}else if(id == s2.length()-1){//当?出现在B的位置时:1+?=10String op=s2.substring(id-1, id);int A=parseInt(s2.substring(0,id-1));int C1=parseInt(C);if(op.equals("+")) System.out.print(C1-A);if(op.equals("-")) System.out.print(A-C1);if(op.equals("*")) System.out.print(C1/A);if(op.equals("/")) System.out.print(A/C1);}else{//当?出现在op的位置时:2?8=10int A=parseInt(s2.substring(0, id));int B=parseInt(s2.substring(id +1,s2.length()));int C1=parseInt(C);if(A+B==C1) System.out.print("+");if(A-B==C1) System.out.print("-");if(A*B==C1) System.out.print("*");if(A/B==C1) System.out.print("/");}}scan.close();}
}

http://www.lryc.cn/news/2378724.html

相关文章:

  • 信贷风控笔记4——贷前策略之额度、定价(面试准备12)
  • A级、B级弱电机房数据中心建设运营汇报方案
  • Linux中的域名解析服务器
  • 如何优化Java中十进制字符串转十六进制的性能
  • CycleISP: Real Image Restoration via Improved Data Synthesis通过改进数据合成实现真实图像恢复
  • Day28 Python打卡训练营
  • 【OpenCV】基本数据类型及常见图像模式
  • Linux之Nginx安装及配置原理篇(一)
  • 【Linux网络】NAT和代理服务
  • 中药药效成分群的合成生物学研究进展-文献精读130
  • 【消息队列】RabbitMQ基本认识
  • OCCT知识笔记之OCAF框架详解
  • 蓝桥杯 16. 外卖店优先级
  • 1T 服务器租用价格解析
  • 【JavaWeb】Maven(下)
  • java.lang.ArithmeticException
  • openEuler24.03 LTS下安装MySQL8.0.42
  • gflags 安装及使用
  • Linux面试题集合(2)
  • 致敬经典 << KR C >> 之打印输入单词水平直方图和以每行一个单词打印输入 (练习1-12和练习1-13)
  • std::ratio<1,1000> 是什么意思?
  • 基于Llama3的开发应用(二):大语言模型的工业部署
  • 2025.05.17淘天机考笔试真题第三题
  • windows 10 做服务器 其他电脑无法访问,怎么回事?
  • Linux进程信号处理(26)
  • 【从设置到上传的全过程】本地多个hexo博客,怎么设置ssh才不会互相影响
  • 顶层架构 - 消息集群推送方案
  • Python训练打卡Day26
  • 构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
  • 报表控件stimulsoft教程:如何在报表和仪表板中创建热图