2018華爲春招筆試題第二題

    華爲2018春招校招的筆試題目第一題比較通俗易懂,就是單純的通過字符串處理就會解決的,這也是華爲筆試的特色,喜歡對字符串處理。然後就是順利進入到第二個題目,也就是一個如果之前有了解的話就會很容易,但是沒有了解的話就會變的特別難!

    【題目】輸入兩個超大整形數,輸出他們的和!

    題目很簡單,但是我們如果仔細看,就會發現int容納不了這麼大的整形數,於是第一想法就是利用字符串把她們讀進來,然後在charAt()分別獲取最低位,轉化成int在相加。

    我做的時候直接應用了BigDecimal這個數據類型,簡單明瞭:

import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;

/**
 * 運算情況主要涉及簡單的一系列運算符
 * 還有就是針對於保留小數
 * 還有就是超大文本對象的運算
 * 最後就是涉及到類型的轉換
 * @author admin
 *
 */
public class Demo06 {
	
	public static void main(String[] args) {
		//2018華爲春招第二題
		//超大整形數運算
		BigInteger a,b,c;		
		a = new BigInteger("123456789987654321");
		b = new BigInteger("445121541321331515");
		//加法
		c = a.add(b);
		System.out.println(c);
		//減法
		c = a.subtract(b);
		System.out.println(c);
		//乘法
		c = a.multiply(b);
		System.out.println(c);
		//除法
		System.out.println(b.divide(a));
		//取模
		System.out.println(b.remainder(a));
		
		System.out.println();
		System.out.println("**********************************分割線**********************************");
		System.out.println();
		
		//保留小數位數的問題
		double d = 1.3356;
		DecimalFormat df = new DecimalFormat("#.00");
		System.out.println(df.format(d));
		
		System.out.println();
		System.out.println("**********************************分割線**********************************");
		System.out.println();
		
		//運算進制的轉化問題
		int intResult = 0;
		intResult = (int) (1.5+2.5);
		System.out.println(intResult);
		
		System.out.println();
		System.out.println("**********************************分割線**********************************");
		System.out.println();
		
		//a++和++a的區別
		int i = 0;
		System.out.println(i++);//先賦值再加1
		i = 0;
		System.out.println(++i);//先加1再賦值
	}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章