2020年第二届计算机能力挑战赛决赛java编程题第一套试卷

举报
资源描述
2020年第二届全国高校计算机能力挑战赛决赛(java) 个人解答源码及思路 (第一套试卷) 1.某高校食堂开办了一个自助餐厅,使用智能餐盘和自动结算,计算学生餐费。 智能餐盘能够识别所打菜品类型,重量,单价(计价单位为:元/100克)。 食堂计划以每道菜、汤独立定价;主食200克以内免费,200克以上部分收费(如果打了多道主食,依据输入次序累计免费200克以下部分)。 为鼓励学生健康饮食,学校鼓励学生联网分享运动信息,参照计步数进行阶梯折扣,0-5999步不打折,6000-9999步为9折,10000步以上均为8折。试根据餐盘提供的信息和学生的计步数,计算该同学某次用餐的最终餐费。 输入说明: 第1行为该生本次用餐所打的所有饭菜种类数量N(0= 0) { 16.                     totalPrice = totalPrice + base * price; 17.                     base = 0; 18.                 } else { 19.                     base = -base; 20.                 } 21.                 continue; 22.             } 23.             totalPrice = totalPrice + weight * price; 24.         } 25.         long steps = in.nextInt(); 26.         if (steps >= 10000) { 27.             totalPrice = totalPrice * 0.8; 28.         } else if (steps >= 6000) { 29.             totalPrice = totalPrice * 0.9; 30. 31.         } 32.         DecimalFormat df = new DecimalFormat("0.00"); 33.         System.out.println(df.format(totalPrice)); 34.     } 35. } 算法思路: 模拟算法。主食免费采用的方法是:当差值>=0,则将免费标准设为0;为差值<0,则将免费标准设为-差值,因为存在多个主食累加的情况。 运行截图: 运行实例1 运行实例2(多个主食) 2. 给定非负整数序列的前两项a1,a2,请按如下规则产生符合要求整数序列:若当前序列的最后2项的乘积为5位数以内的数,则把积作为其后继项;若当前序列的最后两项之积为5位数以上的数,则把该数分别对10000求余和求商,把余和商作为其后继两项。请输出所产生的前10项数字。 输入说明:两个整数a1,a2。 输出说明:输出符合条件的前10项数字。数字之间用空格隔开,所有数据输出后换行。 输入样例: 4 8 输出样例: 32 256 8192 7152 209 4768 149 432 71 672 参考源码; 1. import java.util.Scanner; 2. public class SecondProblemFinal { 3.     public static void main(String[] args) { 4.         Scanner in = new Scanner(System.in); 5.         long a1 = in.nextInt(); 6.         long a2 = in.nextInt(); 7.         long[] values = new long[11]; 8.         int count = 0; 9.         while (count < 10) { 10.             long temp = a1 * a2; 11.             if (temp < 10000) { 12.                 a1=a2; 13.                 a2=temp; 14.                 values[count++] = a2; 15.             } else { 16.                 a1 = temp % 10000; 17.                 values[count++] = a1; 18.                 a2 = temp / 10000; 19.                 values[count++] = a2; 20.             } 21.         } 22.         for (int i = 0; i < 10; i++) { 23.             System.out.print(values[i] + " "); 24.         } 25.         System.out.println(); 26. 27.     } 28. } 算法思路: 模拟算法,主要关注两种情况下的a1和a2的变化(数列一次增加一个数,数列一次增加两个数)。 运行截图: 运行实例1 运行实例2 运行实例3 3. 给定一个含有N个整数的序列(2
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关资源
正为您匹配相似的精品文档
相关搜索

当前位置:首页 > IT计算机/网络 > 数据结构与算法


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号