HBCPC2017 C++ 训练题 春游 超级密码

HBCPC2017 C++

    • 春游
    • 超级密码

题目来源: Hi~ o( ̄▽ ̄)ブ

春游

题目描述:

春天来了 大地万物复苏 一切都是生机勃勃 门前的这簇绿 和远处的那一抹红 都充满了诗意 是的 春天就是这样 给人无限的希望 经过了连续多天紧张的训练,教练决定组织ACM集训队的N位同学一起去郊外感受春天的气息. 为了方便郊游,活动地点提供了 B(≥N) 辆自行车供人租用,现在已知第 i位同学自己携带了元,租用第 j 辆自行车的价格为元. 就在大家忙着租车的时候,教练突然提出了一个问题考大家:在允许同学们相互借钱的前提下,你能计算出最多有多少位同学能够成功租车吗?

输入:

输入数据第一行是一个正整数T,表示有T组测试数据. 每组数据的第一行包括2个正整数N和B,分别表示学生人数和自行车数量. 每组数据的第二行包含N个正整数Mi,表示N位同学每人携带了Mi元. 每组数据的第三行包含B个正整数Cj,表示B辆自行车每辆车的租费. [数据范围] 1 <= T <= 100 1 <=n<=100, n <= B <= 100 1 <= M[i] <= 1000, 1 <= c[i] <= 1000

输出:

请输出能够成功租车的最多人数,每组数据输出一行

例子

输入
1
4 5
2 1 9 6
3 5 4 7 6
输出
4

( •̀ ω •́ )✧

#include <bits/stdc++.h>
typedef long long ll;
typedef long double ld;
using namespace std;
int main()
{
	int n,stu,cyc,a[10005],b[10005],sum=0,i=0,j,k=0,z;
	cin>>n;
	while(n--)
	{
		cin>>stu>>cyc;
		z=stu;
		while(stu--)
		{
			cin>>a[i];
			sum=sum+a[i];
			i++;
		}
		for(j=0;j<cyc;j++)
		{
			cin>>b[j];
		}
		sort(b,b+cyc);//将自行车的费用排序
//		cout<
		for(j=0;j<cyc;j++)//用学生的总钱数-由低到高的自行车
		{
			if(sum>0)
			{
				sum=sum-b[j];
				k++;
			}
			if(sum==0)
				break;
			if(sum<0)
			{ 
				k--;
				break;
			}
		 } 
		 if(k>=z)
		 cout<<z<<endl;
		 else
		 cout<<k<<endl;
		 memset(a,0,sizeof(a));//清空
		 memset(b,0,sizeof(b));
		 k=0;i=0;sum=0;
	}
	return 0;
}

超级密码

题目描述:

小明今年9岁了,最近迷上了设计密码!今天,他又设计了一套他认为很复杂的密码,并且称之为“超级密码”. 说实话,这套所谓的“超级密码”其实并不难:对于一个给定的字符串,你只要提取其中的数字,然后连在一起构成一个整数,再乘以小明的幸运数字513,就是解密后的结果了~比如,字符串“ads2d4,122”,提取后的整数是24122,然后乘以513,就能得到解密后的结果:12374586.注:题目保证解密后的结果在32位无符号整数范围.

输入:

输入首先包括一个正整数N,表示有N组测试用例. 每组数据占一行,包含一个长度不超过30的字符串.

输出:

请根据题目要求输出解密后的结果,每组数据输出一行.

例子

输入
2
ads2d4,122
0023asdf2AA90
输出
12374586
11947770

U•ェ•*U

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int string1(char a[])//提取数字
{
	int num=0,i=0;
	while(i<strlen(a))
	{
		if((a[i]>='0')&&(a[i]<='9'))
		{
			num=num*10+a[i]-'0';
		}
		i++;
	}
	return num;
}
int main()
{
	int i,n;
	char a[50];
	cin>>n;
	while(n--)
	{
		scanf("%s",a);
		i=string1(a);
		cout<<i*513<<endl;
	} 
	return 0;
}

写在最后

  1. 要测试多组数据时记得清空
  2. 从字符数组中提取数字可用

要使用数字char[n]-‘0’
要使用小写字母char[n]-‘a’

有其他方法可留言,有不正之处请指正,谢谢

你可能感兴趣的:(ACM,c++)