ブルーブリッジカップJAVA
20632 ワード
もっとJAVA版解答移歩我的博客:蓝桥杯JAVA版解答まとめ
本題の考査
シミュレーション
構想
構想は簡単で余計なことをしないで、テーマの要求ははっきりしている.進数変換を容易にするため:X進数変換10進数は を用いる.いくつかの無視しやすい点: 本題では中間変数が263未満であるため、Longタイプ を用いるべきである. javaのデフォルトの進数変換アルファベットは、小文字を大文字に変換する です. clear操作の後にはchange操作が続くので、changeを行う場合にはそのときの結果 に変換する.
ACコード
本題の考査
シミュレーション
構想
構想は簡単で余計なことをしないで、テーマの要求ははっきりしている.
Long.valueOf(num, X)
(このときnumはX進数)10進数変換Y進数はLong.toString(num, Y)
(このときnumは10進数)result
が空文字列であるか否かを判断し、そうでなければresult
を目標進数ACコード
import java.util.Scanner;
public class Main {
static String result="";
static String temp="";
static String cal="";
static int radix=10;
static void add() {
cal="add";} //
static void sub() {
cal="sub";} //
static void mul() {
cal="mul";} //
static void div() {
cal="div";} //
static void mod() {
cal="mod";} //
static void clear() {
result=""; temp=""; cal="";} //
static void equal() {
System.out.println(result.toUpperCase());} //
static void change(int newRadix) {
//
if(!result.equals("")) {
long oldValue = Long.valueOf(result, radix);
result = Long.toString(oldValue, newRadix);
}
radix = newRadix;
}
static void num(String num) {
//
if(result.equals("")) result=num;
else {
temp=num;
if(cal.equals("add")) result = Long.toString((Long.valueOf(result, radix)+Long.valueOf(temp, radix)), radix);
else if(cal.equals("sub")) result = Long.toString((Long.valueOf(result, radix)-Long.valueOf(temp, radix)), radix);
else if(cal.equals("mul")) result = Long.toString((Long.valueOf(result, radix)*Long.valueOf(temp, radix)), radix);
else if(cal.equals("div")) result = Long.toString((Long.valueOf(result, radix)/Long.valueOf(temp, radix)), radix);
else result = Long.toString((Long.valueOf(result, radix)%Long.valueOf(temp, radix)), radix);
}
}
public static void main(String[] args) {
Scanner scaner = new Scanner(System.in);
int round = scaner.nextInt();
for (int i = 0; i < round; i++) {
String command = scaner.next();
if(command.equals("CLEAR")) clear();
else if(command.equals("EQUAL")) equal();
else if(command.equals("CHANGE")) change(scaner.nextInt());
else if(command.equals("ADD")) add();
else if(command.equals("SUB")) sub();
else if(command.equals("MUL")) mul();
else if(command.equals("DIV")) div();
else if(command.equals("MOD")) mod();
else num(scaner.next());
}
scaner.close();
}
}