蓝桥杯 - 分糖果 (模拟~)

历届试题 分糖果

时间限制:1.0s   内存限制:256.0MB

问题描述

  有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:

  每个小朋友都把自己的糖果分一半给左手边的孩子。

  一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。

  反复进行这个游戏,直到所有小朋友的糖果数都相同为止。

  你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。

输入格式

  程序首先读入一个整数N(2<N<100),表示小朋友的人数。

  接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)

输出格式

  要求程序输出一个整数,表示老师需要补发的糖果数。

样例输入

3

2 2 4

样例输出

4

直接模拟过去就OK了

AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int a[105];
int N;

int judge() {
	for(int i = 1; i < N; i++)
		if(a[i] != a[0]) return 0;
	return 1;
}

int main() {
	while(scanf("%d", &N) != EOF) {
		for(int i = 0; i < N; i++)
			scanf("%d", &a[i]);

		int ans = 0;
		while(!judge()) {
			int tmp = a[N-1] / 2;
			for(int i = N-1; i > 0; i--) {
				a[i] = a[i] / 2 + a[i-1] / 2;
				if(a[i]&1) ans++, a[i]++;
			}
			a[0] = a[0] / 2 + tmp;
			if(a[0]&1) ans++, a[0]++;
		}

		printf("%d\n", ans);
	}
	return 0;
} 
时间: 2024-10-12 10:47:57

蓝桥杯 - 分糖果 (模拟~)的相关文章

蓝桥杯 分糖果

#include <bits/stdc++.h> using namespace std; #define maxn 105 int a[maxn]; int b[maxn]; int n; int ans; void solve() { while(1) { for(int i=1; i<=n; i++) { b[i] = a[i]/2; a[i] /= 2; } for(int i=1; i<=n; i++) { if(i == 1) a[i] += b[n]; else a[

蓝桥杯——分治法之子集合的个数

{1,2,3}子集合的个数,有{1},{2},{3},{1,2},{2,3},{1,3},{1,2,3},求n个元素组成的集合,m个元素组成的子集合的个数. 如上例,3个元素由其中2个组成的子集合有3个. public class Main{ public static void main(String[] args) { // TODO Auto-generated method stub System.out.print(cal(3, 2)); } static int cal(int n,

蓝桥--分糖果[模拟]

题目链接:http://lx.lanqiao.cn/problem.page?gpid=T124 题目大意: 老师先给n个同学各分偶数个糖果,然后[同时]每个同学将他手中的一半分给左手边的同学.老师将手中为奇数个的同学加一个糖果使其为偶数个糖果.游戏继续进行,直到所有同学手中的糖果数相同. 解题思路: 解题时傻*了,没有考虑到[同时]而是依次累积后再/2,耗时2个小时也是**. 直接暴力模拟. AC Code: 1 #include<stdio.h> 2 int arr[105],n; 3 i

蓝桥杯 拿糖果

问题描述 妈妈给小B买了N块糖!但是她不允许小B直接吃掉. 假设当前有M块糖,小B每次可以拿P块糖,其中P是M的一个不大于根号下M的质因数.这时,妈妈就会在小B拿了P块糖以后再从糖堆里拿走P块糖.然后小B就可以接着拿糖. 现在小B希望知道最多可以拿多少糖. 输入格式 一个整数N 输出格式 最多可以拿多少糖 样例输入 15 样例输出 6 数据规模和约定 N <= 100000 分析: 题目中需要反复用到素数,所以我们可以先打一张素数表出来. 每次遇到素数有两种决策,取或不取. 于是选择用动态规划来

蓝桥杯 历届试题 分糖果 (模拟)

历届试题 分糖果 时间限制:1.0s   内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 输入格式 程序首先读入一个整数N(2<N<100),表示小朋友的人数. 接着是一行用空格分开的N个偶数(

【蓝桥杯】PREV-32 分糖果

题目链接:http://lx.lanqiao.org/problem.page?gpid=T124 历届试题 分糖果 时间限制:1.0s   内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 输入格

蓝桥-分糖果(算法训练)

1 /* 2 蓝桥-分糖果 3 测试通过 4 时间:2015-9-22 5 6 问题描述 7 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 8 9 每个小朋友都把自己的糖果分一半给左手边的孩子. 10 11 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 12 13 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 14 15 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 16 输入格式 17 程序首先读入一个整数N(

蓝桥杯——基础练习之分治法_快速排序

分治法,分而治之,基本思路:分,解,和. 初探分治之快速排序. public class _DividedConquer { static int[] iarr; public static void main(String[] args) { // TODO Auto-generated method stub iarr=new int[]{6,4,5,3,1,2}; quick(0, iarr.length-1); for(int i:iarr) { System.out.print(i+"

2018 蓝桥杯省赛 B 组模拟赛(一)

2018 蓝桥杯省赛 B 组模拟赛(一) A.今天蒜头君带着花椰妹和朋友们一起聚会,当朋友们问起年龄的时候,蒜头君打了一个哑谜(毕竟年龄是女孩子的隐私)说:“我的年龄是花椰妹年龄个位数和十位数之和的二倍”. 花椰妹看大家一脸懵逼,就知道大家也不知道蒜头君的年龄,便连忙补充道:“我的年龄是蒜头君个位数和十位数之和的三倍”. 请你计算:蒜头君和花椰妹年龄一共有多少种可能情况? 提醒:两位的年龄都是在 [10,100)[10,100) 这个区间内. 题解: 暴力枚举 answer: 1 代码如下: #