解题思路:1.获取人数和每个小朋友得到的糖果数
2.把每个小朋友的糖果分成一半给前面一位小朋友,这就需要两个数组来进行计算
3.分完后在判断每个小朋友的糖果数是否为奇数,如果为奇数,就加一,并且记录次数
注意事项:第一位小朋友获得的糖果是最后一位小朋友分出来的一半糖果,要单独判断
参考代码:
Scanner scanner=new Scanner(System.in); //小朋友的人数 int renshu=scanner.nextInt(); //把每个小朋友分到的糖果数放入数组中 int[] sum=new int[renshu]; //循环输入每个小朋友分到的糖果树 for (int i = 0; i < renshu; i++) { sum[i]=scanner.nextInt(); } //每个小朋友把自己分出去一半的糖果放入数组中 int[] yibansum=new int[renshu]; //老师补发的糖果数 int count=0; //执行语句 如果得到的糖果数量不一样的则执行下面的语句 while (true) { //假设每个小朋友的糖果是一样的 boolean result=false; for (int i = 0; i < renshu; i++) { //每个小朋友都分走一半的糖果 yibansum[i]=sum[i]/2; //给左边的小朋友 sum[i]-=yibansum[i]; } for (int i = 0; i < renshu; i++) { //因为围成的是一圈 //所以如果是第一位小朋友 则获得的是最后一名学生的一半糖果 if (i==0) { sum[i]+=yibansum[renshu-1]; } else { //否则就是获得左边小朋友的一半糖果 sum[i]+=yibansum[i-1]; } } for (int i = 0; i < renshu; i++) { //分走一半糖果后判断是否为奇数 if (sum[i]%2!=0) { //如果为奇数 则老师补发一颗糖果 sum[i]+=1; //补发次数增加1 count++; } } for (int i = 0; i < sum.length-1; i++) { //判断每个小朋友的糖果是否一样 if (sum[i]!=sum[i+1]) { //不一样则继续循环 result=true; } } //如果每个小朋友的糖果是一样的 则输出老师补发糖果的次数 if (result==false) { System.out.println(count); break; } }
0.0分
1 人评分
简单的a+b (C语言代码)浏览:760 |
人见人爱A+B (C语言代码)浏览:629 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:768 |
C语言训练-大、小写问题 (C语言代码)浏览:614 |
回文数字 (C语言代码)浏览:2510 |
愚蠢的摄影师 (C++代码)浏览:938 |
母牛的故事 (C语言代码)浏览:945 |
Pascal三角 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:450 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:817 |