【藍橋杯】根據給定的手機尾號(4位),按照一定的規則來打分
阿新 • • 發佈:2019-02-03
import java.util.Scanner; /** * *30年的改革開放,給中國帶來了翻天覆地的變化。2011全年中國手機產量約為11.72億部。手機已經成為百姓的基本日用品! * *給手機選個好聽又好記的號碼可能是許多人的心願。但號源有限,只能輔以有償選號的方法了。 * * 這個程式的目的就是:根據給定的手機尾號(4位),按照一定的規則來打分。其規則如下: * * 1. 如果出現連號,不管升序還是降序,都加5分。例如:5678,4321都滿足加分標準。 * * 2. 前三個數字相同,或後三個數字相同,都加3分。例如:4888,6665,7777都滿足加分的標準。注意:7777因為滿足這條標準兩次,所以這條規則給它加了6分。 * * 3. 符合AABB或者ABAB模式的加1分。例如:2255,3939,7777都符合這個模式,所以都被加分。注意:7777因為滿足這條標準兩次,所以這條標準給它加了2分。 * * 4. 含有:6,8,9中任何一個數字,每出現一次加1分。例如4326,6875,9918都符合加分標準。其中,6875被加2分;9918被加3分。 * * 尾號最終得分就是每條標準的加分總和! * * 要求程式從標準輸入接收資料,在標準輸出上輸出結果。 * * 輸入格式為:第一行是一個整數n(<100),表示下邊有多少輸入行,接下來是n行4位一組的資料,就是等待計算加分的手機尾號。 * 輸出格式為:n行整數。 *例如,輸入: *14 *3045 *0211 *2345 *6543 *7777 *8888 *7878 *7788 *6688 *2424 *2244 *9918 *6789 *8866 *則輸出: *0 *0 *5 *6 *8 *12 *3 *3 *5 *1 *1 *3 *8 *5 * @author xiaoping * */ public class Main8 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); int n = sc.nextInt(); String[] strs = new String[n]; for (int i = 0; i < n; i++) { strs[i] = sc.next(); } sc.close(); for (int i = 0; i < n; i++) { System.out.println(getResult(strs[i])); } } /** *1. 如果出現連號,不管升序還是降序,都加5分。例如:5678,4321都滿足加分標準。 *2. 前三個數字相同,或後三個數字相同,都加3分。例如:4888,6665,7777都滿足加分的標準。 * 注意:7777因為滿足這條標準兩次,所以這條規則給它加了6分。 *3. 符合AABB或者ABAB模式的加1分。例如:2255,3939,7777都符合這個模式,所以都被加分。 * 注意:7777因為滿足這條標準兩次,所以這條標準給它加了2分。 *4. 含有:6,8,9中任何一個數字,每出現一次加1分。例如4326,6875,9918都符合加分標準。 * 其中,6875被加2分;9918被加3分。 * @param s * @return */ public static int getResult(String s){ char [] c = s.toCharArray(); int [] arr = {Integer.parseInt("" + c[0]),Integer.parseInt("" + c[1]), Integer.parseInt("" + c[2]),Integer.parseInt("" + c[3])}; int result = 0; //1 if((arr[0]+1== arr[1]&& arr[1]+1==arr[2]&& arr[2]+1==arr[3])|| (arr[0]-1== arr[1]&& arr[1]-1==arr[2]&& arr[2]-1==arr[3])) result += 5; //2 if(arr[0] == arr[1]&&arr[1]==arr[2]) result+=3; if(arr[1] == arr[2]&&arr[2]==arr[3]) result+=3; //3 if(arr[0]==arr[1] && arr[2]==arr[3]) result+=1; if(arr[0]==arr[2] && arr[1]==arr[3]) result+=1; //4 if(arr[0]==6||arr[0]==8||arr[0]==9) result+=1; if(arr[1]==6||arr[1]==8||arr[1]==9) result+=1; if(arr[2]==6||arr[2]==8||arr[2]==9) result+=1; if(arr[3]==6||arr[3]==8||arr[3]==9) result+=1; return result; } }
輸出結果:
0
0
5
6
8
12
3
3
5
1
1
3
8
5