首页 > ACM题库 > 九度OJ > 九度-1198-a+b[解题代码]
2013
12-13

九度-1198-a+b[解题代码]

题目来源:2010年华中科技大学计算机研究生机试真题

题目描述:

实现一个加法器,使其能够输出a+b的值。

输入:

输入包括两个数a和b,其中a和b的位数不超过1000位。

输出:

可能有多组测试数据,对于每组数据,
输出a+b的值。

样例输入:
2 6
10000000000000000000 10000000000000000000000000000000
样例输出:
8
10000000000010000000000000000000

java 代码如下:
import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

		Scanner s = new Scanner(System.in);
		while(s.hasNext()){
			String a = s.next();
			String b = s.next();
			BigDecimal big1 = new BigDecimal(a);
			BigDecimal big2 = new BigDecimal(b);
			System.out.println(big1.add(big2).toString());
		}
	}

}

/**************************************************************
	Problem: 1198
	User: coder
	Language: Java
	Result: Accepted
	Time:2080 ms
	Memory:81012 kb
****************************************************************/


  1. 漂亮。佩服。
    P.S. unsigned 应该去掉。换行符是n 不是/n
    还可以稍微优化一下,
    int main() {
    int m,n,ai,aj,bi,bj,ak,bk;
    while (scanf("%d%d",&m,&n)!=EOF) {
    ai = sqrt(m-1);
    bi = sqrt(n-1);
    aj = (m-ai*ai-1)>>1;
    bj = (n-bi*bi-1)>>1;
    ak = ((ai+1)*(ai+1)-m)>>1;
    bk = ((bi+1)*(bi+1)-n)>>1;
    printf("%dn",abs(ai-bi)+abs(aj-bj)+abs(ak-bk));
    }
    }