历届试题 小计算器

时间限制:1.0s 内存限制:256.0MB

问题描述

  模拟程序型计算器,依次输入指令,可能包含的指令有

1. 数字:‘NUM X’,X为一个只包含大写字母和数字的字符串,表示一个当前进制的数

  2. 运算指令:‘ADD’,‘SUB’,‘MUL’,‘DIV’,‘MOD’,分别表示加减乘,除法取商,除法取余

  3. 进制转换指令:‘CHANGE K’,将当前进制转换为K进制(2≤K≤36)

  4. 输出指令:‘EQUAL’,以当前进制输出结果

  5. 重置指令:‘CLEAR’,清除当前数字

指令按照以下规则给出:

  数字,运算指令不会连续给出,进制转换指令,输出指令,重置指令有可能连续给出

  运算指令后出现的第一个数字,表示参与运算的数字。且在该运算指令和该数字中间不会出现运算指令和输出指令

  重置指令后出现的第一个数字,表示基础值。且在重置指令和第一个数字中间不会出现运算指令和输出指令

  进制转换指令可能出现在任何地方

运算过程中中间变量均为非负整数,且小于2^63。

  以大写的’A’'Z’表示1035

输入格式

  第1行:1个n,表示指令数量

  第2…n+1行:每行给出一条指令。指令序列一定以’CLEAR’作为开始,并且满足指令规则

输出格式

  依次给出每一次’EQUAL’得到的结果

样例输入

7

CLEAR

NUM 1024

CHANGE 2

ADD

NUM 100000

CHANGE 8

EQUAL

样例输出

2040

这道题我只能过70分,还请路过的大佬帮忙指点指点

import java.math.BigInteger;
import java.util.Scanner;
import java.util.StringTokenizer; public class 小计算器 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
int n = in.nextInt(); String command;
BigInteger res = null;
boolean isStart = false;
int ope = 0;
int PN = 10;
in.nextLine();
for(int i = 0; i < n; i++){
StringTokenizer stringTokenizer = new StringTokenizer(in.nextLine());
command = stringTokenizer.nextToken();
if(command.equals("CHANGE")){
String str = stringTokenizer.nextToken();
PN = Integer.parseInt(str);
}
else if(command.equals("EQUAL")){
String string = res.toString(PN).toUpperCase();
System.out.println(string);
}
else if(command.equals("NUM")){
String str = stringTokenizer.nextToken();
String num = Long.valueOf(str, PN).toString();
if(isStart == true){
res = new BigInteger(num);
isStart =false;
}
else{
switch (ope) {
case 1:
res = res.add(new BigInteger(num));
break;
case 2:
res = res.subtract(new BigInteger(num));
break;
case 3:
res = res.divide(new BigInteger(num));
break;
case 4:
res = res.multiply(new BigInteger(num));
break;
case 5:
res = res.mod(new BigInteger(num));
break;
default:
break;
}
}
}
else if(command.equals("ADD")){
ope = 1;
}
else if(command.equals("SUB")){
ope = 2;
}
else if(command.equals("DIV")){
ope = 3;
}
else if(command.equals("MUL")){
ope = 4;
}
else if(command.equals("MOD")){
ope = 5;
}
else if(command.equals("CLEAR")){
res = new BigInteger("0");
isStart = true;
}
}
} }

Java实现 蓝桥杯 历届试题 小计算器的更多相关文章

  1. Java实现蓝桥杯历届试题高僧斗法

    历届试题 高僧斗法 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 古时丧葬活动中经常请高僧做法事.仪式结束后,有时会有"高僧斗法"的趣味节目,以 ...

  2. Java实现蓝桥杯历届试题买不到的数目

    历届试题 买不到的数目 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友 ...

  3. Java实现蓝桥杯历届试题分考场

    历届试题 分考场 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 n个人参加某项特殊考试. 为了公平,要求任何两个认识的人不能分在同一个考场. 求是少需要分几个考场才能满足条件. 输 ...

  4. Java实现蓝桥杯历届试题兰顿蚂蚁

    历届试题 兰顿蚂蚁 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其 ...

  5. Java实现蓝桥杯历届试题回文数字

    历届试题 回文数字 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做: ...

  6. Java实现 蓝桥杯 历届试题 斐波那契

    试题 历届试题 斐波那契 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 - (x=1,2) f(x) = f(x-1) ...

  7. Java实现 蓝桥杯 历届试题 核桃的数量

    历届试题 核桃的数量 时间限制:1.0s 内存限制:256.0MB 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的 ...

  8. Java实现蓝桥杯 历届试题 k倍区间

    历届试题 k倍区间 时间限制:2.0s 内存限制:256.0MB 问题描述 给定一个长度为N的数列,A1, A2, - AN,如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j) ...

  9. Java实现 蓝桥杯 历届试题 小数第n位

    历届试题 小数第n位 时间限制:1.0s 内存限制:256.0MB 问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数. 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的 ...

随机推荐

  1. FOC中的Clarke变换和Park变换详解(动图+推导+仿真+附件代码)

    文章目录 1 前言 2 自然坐标系ABC 3 αβ\alpha\betaαβ 坐标系 3.1 Clarke变换 3.2 Clarke反变换 4 dqdqdq 坐标系 4.1 Park变换 正转 反转 ...

  2. Wpf 正常关闭程序 Gc 来不及回收?

    最近在使用Udp开发客户端,发现很长时间GC都无法回收UdpClient,所以我决定强制标记Gc,非常奇怪的是,毫无作用,在Windows任务管理器中,也看不见程序的身影.简单来说,gc是系统为你独立 ...

  3. Excel开始,Excel结束,R语言居中

    入职.离职,总公司调往分公司,分公司调往总公司,每月社保.公积金和上月比较有增减.税局导出的为Excel文件,需要和记录对照一番. 用Excel处理,那就是姓名粘贴为两列,条件格式-重复值,没变色的为 ...

  4. 介绍一个船新的 PHP SDK + Runtime: PeachPie

    前言 这几天想基于 .NET Core 搞一个自己的博客网站,于是在网上搜刮各种博客引擎,找到了这些候选:Blogifier.Miniblog 以及 edi 写的 Moonglate. Blogifi ...

  5. Linux安装tomcat并部署JavaWeb项目

    前提条件: 安装tomcat前请确认一下信息: 系统安装了JDK,且JDK版本应与javaWeb所使用的JDK一致,具体操作可参见Linux下安装JDK. 打包了javaWeb的.war 文件,具体操 ...

  6. vue mock 模拟接口数据

    日常总结 希望能帮到大家 1 mock/sever.js  //创建服务 let http=require('http') let fs=require('fs') let url=require(' ...

  7. python 基础应用3

    1.使用while .for循环分别打印字符串s = 'fsufhjshh3hf'中每一个元素. #使用while .for循环分别打印字符串s = 'fsufhjshh3hf'中每一个元素. s = ...

  8. 00001- layui 表格的默认工具栏添加自定义按钮

    首先定义table: var tableIns = table.render({ elem:'#businessUserListTable' ,url: ctx+'/business/business ...

  9. php5.2安装memcached 扩展

    需要注意版本号,好坑. libmemcached release 1.0.16 - installed from sourcephp-memcached release 2.1.0 - install ...

  10. noi7219 复杂的整数划分问题

    noi7219 复杂的整数划分问题 #include <bits/stdc++.h> using namespace std; ; int dp1[maxn][maxn], dp2[max ...