模拟_题目1145:Candy Sharing Game
来源:互联网 发布:java多线程实例代码 编辑:程序博客网 时间:2024/05/17 09:11
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:107
解决:82
- 题目描述:
A number of students sit in a circle facing their teacher in the center. Each student initially has an even number of pieces of candy. When the teacher blows a whistle, each student simultaneously gives half of his or her candy to the neighbor on the right. Any student, who ends up with an odd number of pieces of candy, is given another piece by the teacher. The game ends when all students have the same number of pieces of candy.
Write a program which determines the number of times the teacher blows the whistle and the final number of pieces of candy for each student from the amount of candy each child starts with.
- 输入:
The input may describe more than one game. For each game, the input begins with the number N of students,followed by N (even) candy counts for the children counter-clockwise around the circle. The input ends with a student count of 0. Each input number is on a line by itself.
- 输出:
For each game, output the number of rounds of the game followed by the amount of candy each child ends up with,both on one line.
- 样例输入:
6362222211222018161412108642424680
- 样例输出:
15 1417 224 8
- 提示:
The game ends in a finite number of steps because:
1. The maximum candy count can never increase.
2. The minimum candy count can never decrease.
3. No one with more than the minimum amount will ever decrease to the minimum.
4. If the maximum and minimum candy count are not the same, at least one student with the minimum amount must have their count increase
- 来源:
- 2009年北京大学计算机研究生机试真题
- 答疑:
- 解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7868-1-1.html
代码清单
#include <stdio.h>#define MAX 100int cnt,n,end,a[MAX],tmp[MAX];int main(){ while(scanf("%d",&n),n){ int i = cnt = end = 0; while(i < n) scanf("%d",&(a[i++])); while(!end){ cnt += 1; for(i=0; i<n; i++){ a[i] += a[i]%2 ? 0 : 1; tmp[i] = a[i]/2; a[i] -= tmp[i];} for(i=0; i<n; i++) a[(i+1)%n] += tmp[i]; for(end=i=1; (i<n && end); i++) end = (a[i]==a[0]);} printf("%d %d\n",cnt-1,a[0]-1);} return 0;} /************************************************************** Problem: 1145 User: denallo Language: C Result: Accepted Time:10 ms Memory:908 kb****************************************************************/
- 模拟_题目1145:Candy Sharing Game
- 题目1145:Candy Sharing Game
- 题目1145:Candy Sharing Game
- 题目1145:Candy Sharing Game
- 题目1145:Candy Sharing Game
- 模拟:HDU1034-Candy Sharing Game
- poj 1666 : Candy Sharing Game (模拟)
- HDU 1034 Candy Sharing Game 模拟题
- hdu 1034 Candy Sharing Game(暴力模拟)
- J - Candy Sharing Game(模拟题)
- HDU1034 - Candy Sharing Game (简单模拟)
- hdu 1034 Candy Sharing Game【水题 模拟】
- hdoj 1034 Candy Sharing Game 【模拟】
- 杭电-1034Candy Sharing Game(模拟)
- HDOJ 1034 Candy Sharing Game(模拟)
- HDU 1034 Candy Sharing Game 模拟
- HDU 1034:Candy Sharing Game【模拟】
- POJ 1666 Candy Sharing Game(模拟)
- git命令之git var/config 列出git配置信息
- 判别一个无向图中某两点之间是否存在一条长度为k的简单路径
- 利用windbg分析dump文件
- 第七周C++上级报告(静态成员应用)
- 网络中语言类型
- 模拟_题目1145:Candy Sharing Game
- [bxd学习java基本点]4.List,与角标有关的均来自此,及其独有的方式
- 利用Go语言上传图像并生成缩略图
- Objective-C中的字符串格式化输出
- 友元类
- linux 进程,作业控制,控制终端,会话期
- (一):单片机最小系统组成与I/O输出控制
- Android的搜索框
- 调用API函数读写配置文件