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;
}
}
}
鏈結到這頁!