蓝桥杯 - 历届试题 分糖果 C语言实现

历届试题 分糖果
时间限制:1.0s   内存限制:256.0MB

问题描述
  有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
  每个小朋友都把自己的糖果分一半给左手边的孩子。
  一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
  反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
  你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
  程序首先读入一个整数N(2   接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
  要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
样例输出
4

分析:
这题的数据较小(其实蓝桥杯的测试数据是 2

代码在此:(链表)
#include
#include 

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  

#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;  
}  





你可能感兴趣的:(蓝桥杯算法题)