📄 3084692_ac_234ms_4456k.java
字号:
import java.util.*;
public class Main{
static Map rom = new HashMap();
static int[] limit = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
static String[] roms = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
public static void main(String [] args){
rom.put(Character.valueOf('O'), Integer.valueOf(0));
rom.put(Character.valueOf('I'), Integer.valueOf(1));
rom.put(Character.valueOf('V'), Integer.valueOf(5));
rom.put(Character.valueOf('X'), Integer.valueOf(10));
rom.put(Character.valueOf('L'), Integer.valueOf(50));
rom.put(Character.valueOf('C'), Integer.valueOf(100));
rom.put(Character.valueOf('D'), Integer.valueOf(500));
rom.put(Character.valueOf('M'), Integer.valueOf(1000));
new Main().solve();
}
private void solve(){
Scanner cin = new Scanner (System.in);
String tmp, str;
int reg[] = new int[100];
int id, num, i;
boolean error;
error = false;
while(true){
tmp = cin.next();
if(tmp.charAt(0)=='R'){
reset(reg);
System.out.println("Ready");
}
else{
if(tmp.charAt(0)=='Q'){
break;
}
else{
num = 0;
error = false;
i = tmp.indexOf('=');
id = Integer.parseInt(tmp.substring(0,i));
tmp = tmp.substring(i+1);
for(i = 0; i < tmp.length()&&tmp.charAt(i)!='+'&&tmp.charAt(i)!='-'; i++);
str = tmp.substring(0,i);
if(Character.isDigit(str.charAt(0))){
num = reg[Integer.valueOf(str)];
}
else{
num = getNum(str);
}
if(num == -1)
error = true;
while(!error&&i!=tmp.length()){
int tn;
tmp = tmp.substring(i);
char op = tmp.charAt(0);
for(i = 1; i < tmp.length()&&tmp.charAt(i)!='+'&&tmp.charAt(i)!='-'; i++);
str = tmp.substring(1,i);
if(Character.isDigit(str.charAt(0))){
tn = reg[Integer.valueOf(str)];
}
else{
tn = getNum(str);
}
if(tn==-1){
error = true;
break;
}
else{
if(op=='+'){
num += tn;
}
else{
num -= tn;
}
}
}
if(num < 0 || num > 10000)
error = true;
if(error){
System.out.println("Error");
}
else{
reg[id] = num;
System.out.println(id+"="+turn(num));
}
}
}
}
System.out.println("Bye");
}
private String turn(int num) {
String ret = "";
for (int i = 0; i < limit.length; i++) {
while (num >= limit[i]) {
num -= limit[i];
ret += roms[i];
}
}
if(ret.length()==0)
ret = "O";
return ret;
}
private int getNum(String str) {
int ret, prev;
ret = 0;prev = 10000;
for(int i = 0; i < str.length(); i++){
int t = ((Integer)rom.get(Character.valueOf(str.charAt(i)))).intValue();
if(t > prev){
ret -= (prev<<1);
}
ret += t;
prev = t;
}
return ret;
}
private void reset(int []reg){
Arrays.fill(reg, -1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -