蓝桥杯 - 历届试题 分糖果 C语言实现
2017-03-28 21:58
260 查看
历届试题 分糖果
时间限制:1.0s 内存限制:256.0MB
问题描述
有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
每个小朋友都把自己的糖果分一半给左手边的孩子。
一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
程序首先读入一个整数N(2<N<100),表示小朋友的人数。
接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
样例输出
4
分析:
这题的数据较小(其实蓝桥杯的测试数据是 2<N<1000,蓝桥杯的测试数据都不可靠),直接用数组和链表都满分,推荐用链表熟悉一下。
代码在此:(链表)
代码在此(数组)
时间限制:1.0s 内存限制:256.0MB
问题描述
有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
每个小朋友都把自己的糖果分一半给左手边的孩子。
一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
程序首先读入一个整数N(2<N<100),表示小朋友的人数。
接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
样例输出
4
分析:
这题的数据较小(其实蓝桥杯的测试数据是 2<N<1000,蓝桥杯的测试数据都不可靠),直接用数组和链表都满分,推荐用链表熟悉一下。
代码在此:(链表)
#include<stdio.h> #include <stdlib.h> typedef struct node{ int now; struct node*next; }student; int main () { int n, x=0, y, k, s=0, o[100], m=0; int i, j; student *head, *r, *p, *q; scanf("%d",&n); p = (student*)malloc(sizeof(student)); head = p; p->next = head->next; r = p; for(i = 0; i < n; i ++){ scanf("%d", &k); p = (student*)malloc(sizeof(student)); p->now = k; p->next = head->next; r->next = p; r = r->next; } while(1){ p = head->next; for(i = 0; i < n; i ++, p = p->next){ q = p->next; if(p->now == q->now) m ++; if(m == n){ printf("%d\n", s); return 0; } } m = 0; for(i = 0;i < n; i ++){ y = p->now/2; p->now = y; p->now = p->now + x; x = y; p = p->next; } p->now = p->now+x; x = 0; //有循环的全局变量数要不影响下一局循环 for(i = 0; i < n; i ++){ if(p->now % 2 != 0){ (p->now) ++; s ++; } p = p->next; } } }
代码在此(数组)
#include<stdio.h> #define SIZE 1000+10 int main(){ int a[SIZE]; int n; int s = 0; int i; scanf("%d",&n); for(i = 0; i < n; i ++) scanf("%d", &a[i]); while(1){ int k = 0; for(i = 0; i < n; i ++){ if(a[i] % 2 == 1){ a[i] ++; s ++; } if(a[i] == a[0]) k ++; } if(k == n) break; int temp = a[n-1] / 2; int t; for(i = 0; i < n; i ++){ t = a[i] / 2; a[i] = t + temp; temp = t; } } printf("%d", s); return 0; }
相关文章推荐
- 蓝桥杯 - 历届试题 小朋友排队 C语言实现
- 蓝桥杯 - 历届试题 兰顿蚂蚁 C语言实现
- 蓝桥杯 历届试题 分糖果 【模拟】
- 蓝桥杯 历届试题 分糖果
- 蓝桥杯 历届试题 分糖果
- 蓝桥杯 历届试题 分糖果(Java)
- Java蓝桥杯历届试题 分糖果
- 蓝桥杯 历届试题 小朋友排队 树状数组实现
- 蓝桥杯 历届试题 分糖果 水模拟
- 蓝桥杯 -- 历届试题 分糖果 【模拟,题意是关键】
- 蓝桥杯 历届试题 分糖果
- 蓝桥杯:历届试题 剪格子【JAVA算法实现】
- 蓝桥杯历届试题 分糖果
- 蓝桥杯 历届试题 分糖果
- 蓝桥杯 历届试题 分糖果
- 蓝桥杯 历届试题 分糖果 模拟
- 蓝桥杯:历届试题 错误票据【JAVA算法实现】
- 蓝桥杯--历届试题 分糖果(模拟水题)
- 【蓝桥杯】历届试题 分糖果
- 蓝桥杯 历届试题 分糖果 java