资源描述
2022年第四届全国高校计算机能力挑战赛区域赛(java) 第一套试卷 编程的个人解答源码及思路 1.编写程序完成以下功能:输入正整数a的值,若a为偶数,求aa+aaaa+aaaaaa+ 直到a个a的累加和;若a为奇数,求a+aaa+aaaaa+直到a个a的累加和。 输入说明:1至9之间的正整数a。 输出说明:符合规律要求的连加算式(包含加数、运算符号和累加和,详见输出样例) 输入样例1:5 输入样例2:6 输出样例1:5+555+55555=56115 输出样例2:66+6666+666666=673398 源码: 1. import java.util.Scanner; 2. public class FirstProblemPreliminary { 3.     public static void main(String[] args) { 4.         Scanner sc = new Scanner(System.in); 5.         int number = Integer.valueOf(sc.nextLine()); 6.         int finalSum=0; 7.         String finalPattern=""; 8.         if (number%2==0){ 9.             for(int i=2;i<=number;i+=2){ 10.                 int stepNumber=stepNumber(number,i); 11.                 finalSum=finalSum+stepNumber; 12.                 finalPattern=finalPattern.concat(String.valueOf(stepNumber)).concat("+"); 13.             } 14.         } 15.         if (number%2==1){ 16.             for(int i=1;i<=number;i+=2){ 17.                 int stepNumber=stepNumber(number,i); 18.                 finalSum=finalSum+stepNumber; 19.                 finalPattern=finalPattern.concat(String.valueOf(stepNumber)).concat("+"); 20.             } 21.         } 22.         finalPattern=finalPattern.substring(0,finalPattern.length()-1); 23.         finalPattern=finalPattern.concat("=").concat(String.valueOf(finalSum)); 24.         System.out.println(finalPattern); 25.     } 26.     static int  stepNumber(int number,int times){ 27.         int sum=0; 28.         for(int i=0;iK>Q>J>T>9>8>7>6>5>4>3。比如:6大于5,但是不比4大,6和4不能比较。单牌2属于特殊牌,可以和其他所有普通单牌比较,并且是最大的。 b)对子:即两张牌的点数相同,规则和单牌相似,两个2是特殊对子,可以大于所有的其他对子。注意:对子和单牌不能进行比较。 c)炸弹:3个点数相同的牌。炸弹可以大于任何单张和对子,炸弹之间的比较与单牌和对子不同,只要满足:222>AAA>KKK>QQQ>JJJ>TTT>.…>333的规则的即可。即222是最大的,AAA可以大于KKK,也可以大于333。 编写一个方法实现两手牌的比较: int compareCards (String firstCards, String secondCards) 参数:firstCards是需要比较的第一手牌,secondCards是需要比较的第二手牌 返回:int型数据,如果firstCards和secondCards一样大,返回0;如果firstCards大于secondCards,返回1;如果firstCards小于secondCards;返回-1;如果firstCards和secondCards无法比较,返回2。 输入说明:要比较的两手牌,中间以空格隔开。每一手牌可能是任何大小的单牌、对子或炸弹。不符合规则的输入情况不需考虑。 输出说明:两手牌的比较结果 输入时两手牌之间用空格隔开。 输入样例1:J T 输入样例2:J 8 输出样例1:1 输出样例2:2 源码: 1. import java.util.HashMap; 2. import java.util.Scanner; 3. public class SecondProblemPreliminary { 4.     public static void main(String[] args) { 5.         Scanner sc = new Scanner(System.in); 6.         String[] strArray = sc.nextLine().split("\\s+"); 7.         String firstCards = strArray[0]; 8.         String secondCards = strArray[1]; 9.         System.out.println(compareCards(firstCards,secondCards)); 10.     } 11. 12.     static int compareCards(String firstCards, String secondCards) { 13.         //12=2  21=2  13=-1  31=1  23=-1  32=1 14.         int lengthFirstCards = firstCards.length(); 15.         int lengthSecondCards = secondCards.length(); 16.         if (lengthFirstCards + lengthSecondCards == 3) { 17.             //不能比较(单牌和对子) 18.             //12 21 19.             return 2; 20.         } 21.         if ((lengthFirstCards == 3) && (lengthSecondCards < 3)) { 22.             //大于(第一手牌是炸弹,第二手牌是单牌或者对子) 23.             //31 32 24.             return 1; 25.         } 26.         if ((lengthFirstCards < 3) && (lengthSecondCards == 3)) { 27.             //小于(第二手牌是炸弹,第一手牌是单牌或者对子) 28.             //13 23 29.             return -1; 30.         } 31.         //同级比较 32.         HashMap compareRules = new HashMap<>(); 33.         String[] singleCardString = {"3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A", "2"}; 34.         int numberSingleCards = singleCardString.length; 35.         for (int i = 0; i < numberSingleCards; i++) { 36.             compareRules.put(singleCardString[i], i); 37.         } 38.         //同级比较-炸弹 39.         if (lengthFirstCards == 3) { 40.             int index1 = compareRules.get(firstCards.substring(0, 1)); 41.             int index2 = compareRules.get(secondCards.substring(0, 1)); 42.             //大于 43.             if (index1 > index2) return 1; 44.             //小于 45.             if (index1 < index2) return -1; 46.             //等于 47.             return 0; 48.         } else { 49.             //同级比较-单牌或者对子 50.             int index1 = compareRules.get(firstCards.substring(0, 1)); 51.             int index2 = compareRules.get(secondCards.substring(0, 1)); 52.             int diff = index1 - index2; 53.             if (diff == 0) 54.                 return 0; 55.             if (firstCards.substring(0, 1).equalsIgnoreCase("2")) { 56.                 return 1; 57.             } 58.           
点击显示更多内容>>
收藏
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号