練習 - Quicksum

Quicksum

題目:校驗和是通過一定的算法掃描一個數據計算出的一個數值。如果數據被改變了,則校驗和也應該發生變化,這樣就可以判斷數據在傳輸過程中是否出現差錯。在這個問題中,你將實現一個稱為Quicksum的校驗和算法。 Quicksum算法計算由大寫字母和空格組成的數據。並且數據開始和結尾的空格不加入計算。一個數據的Quicksum是每個字符的在數據中的位置乘以該字符的值。空格值為0,字母的值就是其在字母表中的位置。因此A=1,B=2,etc。如下是”ACM”和”MID CENTRAL”的Quicksum計算過程: ACM: 1*1 + 2*3 + 3*13 = 46 MID CENTRAL: 1*13 + 2*9 + 3*4 + 4*0 + 5 *3 + 6*5 + 7*14 + 8*20 + 9*18 + 10*1 + 11*12 = 650

輸入:每個輸入只包含一個數據,佔一行,不會以空格開頭結尾,長度不超過255字符。

輸出:對於每一個數據,輸出其校驗和,佔一行。

import java.util.Scanner;

public class Quicksum {
	public static int value(char c){
		if(c == ' ')
			return 0;
		return Character.getNumericValue(c) - Character.getNumericValue('A') + 1;
	}
	
	public static void main(String[] args) {
		int sum = 0;
		int i = 1;
				
		Scanner scanIn = new Scanner(System.in);
        	String str = scanIn.nextLine();
        	while(!str.equals("#")){
	        	for(char c : str.toCharArray()){
	        		sum += i * value(c);
	        		i++;
	        	}
	        	System.out.printf("Sum: %d \n", sum);
	        
	        	scanIn = new Scanner(System.in);
	        	str = scanIn.nextLine();
	        	sum = 0;
	        	i = 1;
        	}
	}
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

驗證碼 * Time limit is exhausted. Please reload CAPTCHA.

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料