posts - 64, comments - 4, trackbacks - 0, articles - 0

hdu 3546

Posted on 2010-08-22 22:52 acronix 阅读(235) 评论(0)  编辑 收藏 引用 所属分类: zhaoboqiang解题报告
 

Calculator

Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)

Total Submission(s): 369    Accepted Submission(s): 119

 

 

Problem Description

Golden Adobe is the most advanced computer for scientific computing in the world. Unfortunately, it broke down. Your task is to write a super computing software to take its place. The software contains 10 registers named from A to J. There are three operations on the registers:

1) Assignment: X=Y

2) Addition: X+=Y

3) Multiplication: X*=Y

Notice that X and Y are two registers, and they may be the same.

Initially, all the registers are stored by integer 1. Your program should operate several operations and output the final result for 10 registers. You may assume that the length of each decimal number stored in the register is no longer than 5000.

 

 

Input

The input contains only one test case including several lines.

Each line contains an operation to be calculated.

The number of operations will no more than 300000.

 

 

Output

The output should contains exactly 10 lines, each line contains an integer denoting the decimal number in the register. See sample test case for further details.

 

 

Sample Input

A+=B

A*=A

A+=A

B+=A

C+=B

D=B

 

 

Sample Output

8

9

10

9

1

1

1

1

1

1

读入注意要用Scanner中的next()方法,用nextline()就TLE

import java.math.*;
import java.util.
*;

public class Main {
    
public static BigInteger[] num = new BigInteger[10];;

    
public static void main(String[] args) {
        Scanner cin 
= new Scanner(System.in);
        
for (int i = 0; i < 10; i++{
            num[i] 
= BigInteger.ONE;
        }

        
while (cin.hasNext()) {
            String s 
= cin.next();
            
if (s.length() == 4{
                
if (s.charAt(1== '*'{
                    num[s.charAt(
0- 'A'= num[s.charAt(0- 'A'].multiply(num[s.charAt(3- 'A']);
                }
 else {
                    num[s.charAt(
0- 'A'= num[s.charAt(0- 'A'].add(num[s.charAt(3- 'A']);
                }

            }
 else {
                num[s.charAt(
0- 'A'= num[s.charAt(2- 'A'];
            }

        }


        
for (int i = 0; i < 10; i++{
            System.
out.println(num[i]);
        }

    }

}


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理