2018笔试题——求一元一次方程的解
来源:互联网 发布:淘宝电脑端宽屏专修 编辑:程序博客网 时间:2024/06/06 00:43
给出一个没有简化的一元一次方程的解,如果方程没有解,返回“No solution”;如果方程有无穷解,返回“Infinite solutions”。如果这个方程只有一个解,返回“x=?”,其中?代表解的数值,题目保证方程的解是整数。
示例1:
输入:
2x+5-3+x=6+x-2
输出:
x=1
示例2:
输入:
-2x=x-3x+7
输出:
No solution
示例3:
输入:
x+7=5+x+2
输出:
Infinite solutions
代码:
import java.util.Scanner;public class Equation {public static void main(String[] args) {Scanner in = new Scanner(System.in);String ss = in.nextLine();String[] s = ss.split("=");//将等式两边的分开处理int a=0;//代表累积常数int b=0;//代表累积系数//等式左边a += f(s[0])[0];b += f(s[0])[1];//等式右边a -= f(s[1])[0];b -= f(s[1])[1];if(a==0)System.out.println("Infinite solutions");else if(b==0){System.out.println("No Solution!");}else{System.out.println(-a/b);//注意打印时候的符号}}public static int[] f(String s){int[] t= new int[2];//t[0]存常数,t[1]存x前面的系数int e=0,f=0;//f取符号,e取当前读到的数字if(s.substring(0, 1).equals("-"))//先判断第一位是整数还是负数f=-1;elsef=1;int bb=0;//bb用于存放一个数for(int i=0;i<s.length();i++){String c=s.substring(i, i+1);//c取当前字符(注意是字符串的形式if(c.equals("+") ){t[0] += f*bb;//读到“+”时,说明当前读到的是一个常数,存入常数数组f=1;//读取到“+”时,将符号置为1,代表加一个正数bb=0;//存完一个数之后,记得将该变量置为0,以便存储后续的数}else if(c.equals("-") ){t[0] +=f*bb;f=-1;//读取到“+”时,将符号置为-1,代表加一个负数bb=0;}else if(c.equals("x")){if(bb==0)bb=1;t[1] += f*bb;bb=0;}else{e = Integer.valueOf(c);bb = bb*10+e*f;f=1;if(i==s.length()-1)//当读取到最后一位不是x且还未结束时,说明当前是一个常数,累积加到常数中t[0] += f*bb;}}return t;}}
阅读全文
0 0
- 2018笔试题——求一元一次方程的解
- 用“派生类”求一元一次方程的解
- 第九周 项目5--求一元一次方程的解
- noip2000计算器的改良 (模拟,解一元一次方程)
- 第九周(项目五)——设计一元一次方程类,求形如ax+b=0的方程的解。
- 9.5 一元一次方程的计算
- java解一元一次方程
- 一元一次方程
- 一元一次方程
- 一元一次方程
- 一元一次方程
- 第九周项目5——设计类求解一元一次方程
- 【算法题】百度笔试题——求一组线段的最大重叠区域
- 求结构长度笔试题的分析。
- 一道求循环小数的程序员笔试题
- 阿里云笔试题—求矩阵交集
- POJ2252解题报告 解一元一次方程
- GOOGLE的一道笔试题—求给定连通无环无向图可以生成的最小高度树
- Linux用户和文件权限管理
- 单链表及系列操作
- 模板方法模式
- Java String内存模型
- grep 命令系列:grep 中的正则表达式
- 2018笔试题——求一元一次方程的解
- 剑指offer 2 替换空字符串
- 解决jparepository.saveandflush插入不保存的情况
- Dell precision 5520工作站Ubuntu系统安装
- Git学习笔记--基础知识
- 在 Ubuntu 16.04 上安装 Bro 网络分析器
- CodeForces
- Vue生命周期中mounted和created的区别
- iOS URLstring中带有中文