蓝桥杯国14 不完整的算式

!!!!!!!!!!!!!!!理清思路 然后一步步写

问题描述

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

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

输入描述

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

输出描述

如果被擦掉的部分是 A、B、C 之一,请输出一个整数代表答案。如果被擦掉的部分是 op,请输出+、-、*、/四个字符之一代表答案。

样例输入1

复制代码
1+?=2

样例输出1

复制代码
1

样例输入2

复制代码
10?3=3

样例输出2

复制代码
/

代码示例

java 复制代码
import java.util.Scanner;
public class Main{
	public static void main(String[]args)
	{
		Scanner sc=new Scanner(System.in);
		String s=sc.nextLine();
		if(s.contains("+")||s.contains("-")||s.contains("*")||s.contains("/"))//当字符串中有+-*/负号,即缺ABC
		{
			String s1[]=s.split("=");//从=字符将整个字符串分成两个字符串,"A op B"是s1[0],"C"是s1[1];
			String s2=s1[0];//即s2="A op B"
			if(s1[1].equals("?"))//即C被?代替了
			{
				int op=0;
				for(int i=0;i<s2.length();i++) {
					if(s2.charAt(i)<'0'||s2.charAt(i)>'9')//检查运算符所在位置的索引
					{
						op=i;
						break;
					}
				}
				int a=Integer.parseInt(s2.substring(0,op));
				int b=Integer.parseInt(s2.substring(op+1,s2.length()));
				if(s.contains("+"))System.out.println(a+b);
				if(s.contains("-"))System.out.println(a-b);
				if(s.contains("*"))System.out.println(a*b);
				if(s.contains("/"))System.out.println(a/b);
			}
			else {//A或B被替代了
				int c=Integer.parseInt(s1[1]);
				int op=0;
				for(int i=0;i<s2.length();i++)
				{
					if(s2.charAt(i)=='+'||s2.charAt(i)=='-'||s2.charAt(i)=='*'||s2.charAt(i)=='/')//检查运算符所在位置的索引
					{
						op=i;
						break;
					}
				}
				int a=0;
				if(s2.charAt(op-1)>='0'&&s2.charAt(op-1)<='9')//有A缺B
				{
					a=Integer.parseInt(s2.substring(0,op));
					if(s.contains("/"))System.out.println(a/c);
					if(s.contains("-"))System.out.println(a-c);
				}else {//有B缺A
					a=Integer.parseInt(s2.substring(op+1,s2.length()));
					if(s.contains("/"))System.out.println(a*c);
					if(s.contains("-"))System.out.println(a+c);
				}
				if(s.contains("+"))System.out.println(c-a);
				if(s.contains("*"))System.out.println(c/a);
				
			}
		}else {//缺运算符
			String s1[]=s.split("=");//从=字符将整个字符串分成两个字符串
			int c=Integer.parseInt(s1[1]);//转换成整数C
			String s2=s1[0];
			int op=0;
			for(int i=0;i<s2.length();i++)
			{
				if(s2.charAt(i)<'0'||s2.charAt(i)>'9')//检查运算符所在位置的索引
				{
					op=i;
					break;
				}
			}
			int a=Integer.parseInt(s2.substring(0,op));//转换成整数A
			int b=Integer.parseInt(s2.substring(op+1,s2.length()));//转换成整数B
			if(a+b==c)System.out.println("+");
			if(a-b==c)System.out.println("-");
			if(a*b==c)System.out.println("*");
			if(a/b==c)System.out.println("/");
		}
	}
}
相关推荐
闻缺陷则喜何志丹9 小时前
【数论】P10580 [蓝桥杯 2024 国 A] gcd 与 lcm|普及+
c++·数学·蓝桥杯·数论·洛谷
汉克老师1 天前
第十四届蓝桥杯青少组C++选拔赛[2023.2.12]第二部分编程题(1、求和)
c++·蓝桥杯·蓝桥杯c++·c++蓝桥杯
汉克老师2 天前
第十四届蓝桥杯青少组C++国赛[2023.5.28]第二部分编程题(4、 数独填数)
c++·蓝桥杯·蓝桥杯c++·c++蓝桥杯
闻缺陷则喜何志丹2 天前
【 线段树】P12347 [蓝桥杯 2025 省 A 第二场] 栈与乘积|普及+
数据结构·c++·蓝桥杯·线段树·洛谷
古译汉书3 天前
蓝桥杯算法之基础知识(6)
数据结构·算法·蓝桥杯
古译汉书4 天前
蓝桥杯算法之基础知识(4)
开发语言·python·算法·蓝桥杯
古译汉书4 天前
蓝桥杯算法之基础知识(5)
数据结构·算法·蓝桥杯
范纹杉想快点毕业4 天前
数据结构与算法个人学习代码笔记包含leetcode,海贼oj,蓝桥杯,ACM
java·开发语言·笔记·学习·算法·leetcode·蓝桥杯
sssvangen4 天前
拔河(蓝桥杯)(前缀和)
算法·前缀和·职场和发展·蓝桥杯
楼田莉子6 天前
C++算法学习专题:前缀和
c++·学习·算法·leetcode·蓝桥杯