題目連結
題意:
給兩字串
不管大小寫,依照 A = 1, B = 2, ..., Z = 26 加總
分別計算兩字串的分數
若分數超過 2 位數,將各位數字加總,直到結果為 1 位數
如: 77 = > 7+7= 14 = > 1+4 = 5
求兩字串比值,不得超過 100% (大的當分母)
解法:
直觀的題目,依照規則寫即可
1. 注意測資可能亂七八糟
可以先轉成小寫 (ToLowerCase,只統計小寫字母)
2. 要判斷兩分數大小,而且要依百分比格式輸出
相等沒差,反正都是 100%
3. 若算分數是用整數變數存,計算比值要先強制轉型
直接用整數相除會無條件捨棄小數 (如: 5/3 = 1)
程式(Java):
題意:
給兩字串
不管大小寫,依照 A = 1, B = 2, ..., Z = 26 加總
分別計算兩字串的分數
若分數超過 2 位數,將各位數字加總,直到結果為 1 位數
如: 77 = > 7+7= 14 = > 1+4 = 5
求兩字串比值,不得超過 100% (大的當分母)
解法:
直觀的題目,依照規則寫即可
1. 注意測資可能亂七八糟
可以先轉成小寫 (ToLowerCase,只統計小寫字母)
2. 要判斷兩分數大小,而且要依百分比格式輸出
相等沒差,反正都是 100%
3. 若算分數是用整數變數存,計算比值要先強制轉型
直接用整數相除會無條件捨棄小數 (如: 5/3 = 1)
程式(Java):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
public class Main { | |
public static int getValue(int v) { | |
if (v < 10) | |
return v; | |
int sum = 0; | |
while (v >= 10) { | |
sum += v%10; | |
v /= 10; | |
} | |
return sum + v; | |
} | |
public static void main(String args[]) { | |
Scanner sc = new Scanner(System.in); | |
while (sc.hasNext()) { | |
int v1 = 0, v2 = 0; | |
String s1 = sc.nextLine(); | |
s1 = s1.toLowerCase(); | |
for (int i = 0; i < s1.length(); i++) | |
if (s1.charAt(i) >= 'a' && s1.charAt(i) <= 'z') | |
v1 += (s1.charAt(i) - 'a' + 1); | |
while (v1 >= 10) { | |
v1 = getValue(v1); | |
} | |
String s2 = sc.nextLine(); | |
s2 = s2.toLowerCase(); | |
for (int i = 0; i < s2.length(); i++) | |
if (s2.charAt(i) >= 'a' && s2.charAt(i) <= 'z') | |
v2 += (s2.charAt(i) - 'a' + 1); | |
while (v2 >= 10) { | |
v2 = getValue(v2); | |
} | |
float ratio = ((v1 > v2) ? ((float)v2/(float)v1) : ((float)v1/(float)v2)) * 100; | |
System.out.printf("%.2f %%\n", ratio); | |
} | |
} | |
} |
留言
張貼留言