分蛋糕

分蛋糕

时间限制: 1.0s
内存限制: 256.0MB
问题描述:
小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an。小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明总是先将自己手中编号最小的蛋糕分给他,当这个朋友所分得蛋糕的重量不到k时,再继续将剩下的蛋糕中编号最小的给他,直到小明的蛋糕分完或者这个朋友分到的蛋糕的总重量大于等于k。请问当小明的蛋糕分完时,总共有多少个朋友分到了蛋糕。
输入格式:输入的第一行包含了两个整数n, k,意义如上所述。第二行包含n个正整数,依次表示a1, a2, …, an。
输出格式:输出一个整数,表示有多少个朋友分到了蛋糕。
样例输入:
6 9 2 6 5 6 3 5
样例输出:
3
样例说明:第一个朋友分到了前3块蛋糕,第二个朋友分到了第4、5块蛋糕,第三个朋友分到了最后一块蛋糕。
评测用例规模与约定:对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 10000,1 ≤ ai ≤ 1000。
代码:

#include<iostream>
using namespace std; 
int main(){
	int n,k;cin>>n>>k;int b=0; 
	int count=0;//分到蛋糕的人数
	bool s=true;//判断是否需要从新的一个开始加
	for(int i=0;i<n;i++)
	{
		int a;cin>>a;
		if(s==true)//从新的一个开始加
		{  count++;//只要从新的一个开始加,就有人分到蛋糕
			if(a<k)	{	b=b+a;s=false;	}
		}
		else{//加到上一个不够 
			if(a+b>=k){	s=true;b=0;	}
			else{	b=b+a;	}
		}
	}
	cout<<count;
	return 0;
}

打酱油

时间限制: 1.0s
内存限制: 256.0MB
问题描述:
  小明带着N元钱去买酱油。酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶。请问小明最多可以得到多少瓶酱油。
输入格式:输入的第一行包含一个整数N,表示小明可用于买酱油的钱数。N是10的整数倍,N不超过300。
输出格式:输出一个整数,表示小明最多可以得到多少瓶酱油。
样例输入:
40
样例输出:
5
样例说明:把40元分成30元和10元,分别买3瓶和1瓶,其中3瓶送1瓶,共得到5瓶。
样例输入:
80
样例输出:
11
样例说明:把80元分成30元和50元,分别买3瓶和5瓶,其中3瓶送1瓶,5瓶送2瓶,共得到11瓶。
代码:

#include<iostream>
using namespace std; 
int main(){
	int n;cin>>n;int count=0;
	int k=n/50;int j=(n-k*50)/30;int i=(n-j*30-k*50)/10;
	count=k*7+j*4+i;//能买多少瓶
	cout<<count;
	return 0;
}

最小差值

时间限制: 1.0s
内存限制: 256.0MB
问题描述: 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。
输入格式:输入第一行包含一个整数n。第二行包含n个正整数,相邻整数之间使用一个空格分隔。
输出格式:输出一个整数,表示答案。
样例输入:
5
1 5 4 8 20
样例输出:
1
样例说明:相差最小的两个数是5和4,它们之间的差值是1。
样例输入
5
9 3 6 1 3
样例输出
0
样例说明:有两个相同的数3,它们之间的差值是0.
数据规模和约定:对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。
代码:

#include<iostream>
#include<math.h>
using namespace std; 
int main(){
	int n;cin>>n;int A[n];
	for(int i=0;i<n;i++)
	{int a;cin>>a;A[i]=a;} int s=100;
	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
		    int m=abs(A[i]-A[j]);
			if(m<s){s=m;}
		}
	}
	cout<<s;
	return 0;
}

跳一跳

时间限制: 1.0s
内存限制: 256.0MB
问题描述:
  近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。
  如果跳到了方块上,但没有跳到方块的中心则获得1分;跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8...)。
  现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的规则)。
输入格式:
  输入包含多个数字,用空格分隔,每个数字都是1,2,0之一,1表示此次跳跃跳到了方块上但是没有跳到中心,2表示此次跳跃跳到了方块上并且跳到了方块中心,0表示此次跳跃没有跳到方块上(此时游戏结束)。
输出格式:输出一个整数,为本局游戏的得分(在本题的规则下)。
样例输入:
1 1 2 2 2 1 1 2 2 0
样例输出:
22
数据规模和约定:对于所有评测用例,输入的数字不超过30个,保证0正好出现一次且为最后一个数字。
代码:

#include<iostream>
using namespace std;
int main()
{
	int A[30];int i;int count=0;
	for(i=0;;i++)
	{
		int a;cin>>a;A[i]=a;
		if(a==0)break;
	}int b=0;bool c=false;
	for(int j=0;j<i;j++)
	{
		if(A[j]==0) break;
		if(A[j]==1) {
			b=1;count=count+b;
		}
		if(A[j]==2)
		{
			if(b==1||c==false)
			{
				b=2;count=count+b;c=true;
			}
			else{
				b=b+2;
				count=count+b;
			}
		}
	}
	cout<<count;
	return 0;
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值