蓝桥杯备考2

P8839 [传智杯 #4 初赛] 组原成绩

题目描述

花栗鼠科技大学(Hualishu University of Science and Technology, HUST)的计算机组成原理快要出分了。你现在需要计算你的组原成绩如何构成。

具体来说,组原成绩分为三部分,分别是平时出勤 t ,作业 ℎ和考试 e 。总成绩 w 由如下公式计算:

w=t×20%+h×30%+e×50%

其中我们保证 0≤h,e,t≤100

现在你知道了你的组原考试的t,h,e ,你希望计算你的总成绩。

由于教务系统的特殊性,最终成绩只能是整数,采取 直接去掉小数部分 的办法。

输入格式

一行三个整数,表示 t,h,e

输出格式

一行一个整数,为 w

输入输出样例

输入 #1  50 100 100

输出 #1   90

代码

#include<iostream>
using namespace std;
int main()
{
	int t,h,e;
	cin>>t>>h>>e;
	int w;
	w=t*0.2+h*0.3+e*0.5;
	cout<<w<<endl;
	return 0;
 } 

P8841 [传智杯 #4 初赛] 竞争得分

题目描述

为了鼓励大家写出更好的作业,花栗鼠科技大学(Hualishu University of Science and Technology, HUST)的组原实验采用了竞争得分的方式。

具体来说,假设有 n 个人提交了作业,并且其中原始得分最低的人记作a_{min} ​ ,原始得分最高的人记作 a_{max}​,第 i 个人的原始得分为 a_{i}​,那么第 i 个人的得分就是:

10*\frac{a_{i}-a_{max}}{a_{max}-a_{min}}

由于成绩系统的问题,最终录入的成绩只能是整数,采用直接去掉小数部分的方法

输入格式

第一行一个整数 n 表示人数。(1≤n≤1000)

第二行共n 个整数,为序列 a ,其中 a_{i}​ 表示第 i 个人的原始作业得分。(1≤a_{i}​≤1000)

输出格式

一行,共 n 个整数,表示经过更新后每个人的得分。

输入输出样例

输入 #1

3

1 2 3

输出 #1

0 50 100

代码

#include<iostream>
#include<vector>
using namespace std;
int main()
{
 	int n,amax=0,amin=100000000;
 	cin>>n;
 	vector <int>arr(n);
 	for(int i=0;i<n;i++)
	 {
	 	cin>>arr[i];
	 }
	 for(int i=0;i<n;i++)
	 {
	 	amax=(amax>arr[i])?amax:arr[i];
	 	amin=(amin<arr[i])?amin:arr[i];
	 }
 	int t=amax-amin;
 	for(int i=0;i<n;i++)
 	{
 		arr[i]=((arr[i]-amin)*100)/t;
 		if(arr[i]<0)arr[i]=0;
	 }
	for(int i=0;i<n;i++)cout<<arr[i]<<' ';
 	return 0;
}

P8822 [传智杯 #3 初赛] 课程报名

题目描述

传智播客推出了一款课程,并进行了一次促销活动。具体来说就是,课程的初始定价为 v 元;每报名 m 个学员,课程的定价就要提升 a 元。由于课程能够容纳的学生有限,因此报名到 n 人的时候就停止报名。

现在老师想知道,当课程停止报名时,一共可以获得多少学费呢?

输入格式

一行四个使用空格隔开的整数,分别为 n,v,m,a。

输出格式

一行一个整数,表示答案。

输入输出样例

输入 #1  5 1 1 1

输出 #1  15

说明/提示

样例解释

每卖出 1个课程,价格就会提高 1元,所以总共获得 1+2+3+4+5=15 元。

数据规模与约定

对于 50% 的数据,满足 1≤n,m,v,a≤10;

对于额外 20%的数据,满足 a=0;

对于 100% 的数据,满足 0≤n,m,v,a≤1000。

然而,由于本次比赛是 ACM 赛制,因此您必须通过 100%的数据才能够获得本题的得分,后题同。

代码

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	int n,v,m,a,num=0;
	cin>>n>>v>>m>>a;
	vector <int>arr(n);
	
	for(int i=0,t=1;i<n;i++,t++)
	{
		arr[i]=v;
		if(t%m==0)v+=a;
	} 
	
	for(int i=0;i<n;i++)
	{
		num+=arr[i];
	}
	cout<<num;
	return 0;
}

P8829 [传智杯 #3 练习赛] 单位转换

题目描述

我们知道计算机的大小单位有 B, KB, MB 等,现在请你编写一个计算器进行大小单位换算。

提示,1 GB = 2 ^{10}MB = 2^{20} KB = 2^{30} B。

输入格式

输入一个字符串,由一个 0 到 1023 之间的整数,一个单位名称(大写字母),一个等于号和问号,以及第二个单位名称。

单位只有可能是 GB,MB,KB,B 之间的一个。

输出格式

输出一个数字,精确到小数点后 6 位。

输入输出样例

输入 #1  128MB=?GB

输出 #1  0.125000

输入 #2  64MB=?KB

输出 #2  65536.000000

代码

#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int main()
{
	int num1;
	double num2=0;
	string per1;//单位 
	cin>>num1>>per1;
	//GB,MB,KB,B
	if(per1[0]=='G'&&per1[4]=='M')num2=num1*pow(2,10);
	if(per1[0]=='G'&&per1[4]=='K')num2=num1*pow(2,20);
	if(per1[0]=='G'&&per1[4]=='B')num2=num1*pow(2,30);
	
	if(per1[0]=='M'&&per1[4]=='K')num2=num1*pow(2,10);
	if(per1[0]=='M'&&per1[4]=='B')num2=num1*pow(2,20);	
	
	if(per1[0]=='K'&&per1[4]=='B')num2=num1*pow(2,10);	 
	
	
	if(per1[0]=='B'&&per1[3]=='K')num2=num1/pow(2,10);
	if(per1[0]=='B'&&per1[3]=='M')num2=num1/pow(2,20);
	if(per1[0]=='B'&&per1[3]=='G')num2=num1/pow(2,30);
	
	if(per1[0]=='K'&&per1[4]=='M')num2=num1/pow(2,10);
	if(per1[0]=='K'&&per1[4]=='G')num2=num1/pow(2,20);
	
	if(per1[0]=='M'&&per1[4]=='G')num2=num1/pow(2,10);
	
	if(per1[1]=='B'&&per1[0]==per1[4])num2=num1;
	if(per1[1]=='B'&&per1[0]==per1[3])num2=num1;
	printf("%0.6lf\n",num2);
	return 0;
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值