前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >哈理工新生赛

哈理工新生赛

作者头像
AngelNH
发布2020-04-16 11:54:30
3960
发布2020-04-16 11:54:30
举报
文章被收录于专栏:AngelNI

A

题目描述

最近ACM协会的同学总是利用休息的时间来玩LOL,而且一不小心就玩过头,就耽误了培训时间,这让会长很头疼。玩LOL的同学都知道LOL的全英文名是League of Legends,那么问题来了,如果给你这个单词leagueofl,也就是league这个单词加of这个单词加字母l,然后给你一个全部由小写英文字母组成的字符串,希望这个串中含leagueofl这个单词尽量多。例如串是eagueofaaalltyleagueofl,那么我们可以整理成leagueoflleagueoflaaaty,那么这个串中最多含有两个这个单词。

输入描述:

代码语言:javascript
复制
包含多组数据,输入一串字符串全部有小写英文字母组成。(长度不超过100)

输出描述:

代码语言:javascript
复制
这个串中所包含的最多leagueofl的个数。

示例1

输入

代码语言:javascript
复制
eagueofaaalltyleagueofl

输出

代码语言:javascript
复制
2
代码语言:javascript
复制
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
string a;
int aa[100];
int main()
{
    while(cin>>a)
    {
        memset(aa,0,sizeof(aa));
        for(int i =0;i<a.length();++i)
        {
            if(a[i]=='l')
                aa[1]++;
            if(a[i]=='e')
                aa[2]++;
            if(a[i]=='a')
                aa[3]++;
            if(a[i]=='g')
                aa[4]++;
            if(a[i]=='u')
                aa[5]++;
            if(a[i]=='o')
                aa[6]++;
            if(a[i]=='f')
                aa[7]++;
        }
        int sum = 0;
        while(1)
        {
            if(aa[1]<2||aa[2]<2||aa[3]<1||aa[4]<1||aa[5]<1||aa[6]<1||aa[7]<1)
                break;
            else
            {
                aa[1]-=2;
                aa[2]-=2;
                aa[3]-=1;
                aa[4]-=1;
                aa[5]-=1;
                aa[6]-=1;
                aa[7]-=1;
                sum++;
            }
            
        }
        cout<<sum<<endl;
        a.clear();
    }
    return 0;
}

B

题目描述

不同的游戏有着不同的开始提示,像Are you really?Go!或者Can you start?。再一些大型的比赛中也有一些提示语,像Wa,Ac.等等。所以现在要求你输出一句提示语:Do you want to play ACM?(yes\no)

输入描述:

代码语言:javascript
复制

输出描述:

代码语言:javascript
复制
在一行中输出这一句话,所有符号均为英文符号。一定要仔细

示例1

输入

代码语言:javascript
复制

输出

代码语言:javascript
复制
Do you want to play ACM?(yes\no)
代码语言:javascript
复制
#include<iostream>
using namespace std;
int main()
{
    cout<<"Do you want to play ACM?(yes\\no)"<<endl;
    return 0;
}

C

题目描述

img
img

如图所示为一个由n个圆圈构成的圆环。将自然数1,2,…,n放入圆圈内,并且要求任意两个相邻的圆圈内的数字之和为素数。请问给你圆圈数,你能给出放置自然数的所有正确方案吗?

注意:圆圈中的数字一定是从1开始的,并且连续不重复。

输入描述:

代码语言:javascript
复制
输入包含多组测试数据。每组输入占一行,为整数n(0<n<20),表示圆圈数。

输出描述:

代码语言:javascript
复制
对于每组输入,输出所有正确的方案,按字典序从小到大排序。每组输出后输出一个空行。具体输出格式见输出样例。

示例1

输入

代码语言:javascript
复制
6
8

输出

代码语言:javascript
复制
Case 1:
1 4 3 2 5 6
1 6 5 2 3 4

Case 2:
1 2 3 8 5 6 7 4
1 2 5 8 3 4 7 6
1 4 7 6 5 8 3 2
1 6 7 4 3 8 5 2

备注:

代码语言:javascript
复制
注意:只能按照顺时针方向放置数字。
代码语言:javascript
复制
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int a[50];
int pre[206];
void f()
{
    memset(pre,0,sizeof(pre));
    pre[1] = 1;
    for(int i =2;i*i<201;++i)
    {
        if(!pre[i]) for(int j =i*i;j<201;j+=i)
            pre[j] = 1;
    }
}
int main()
{
    int n ;
    f();
    int nn=0;
    while(cin>>n)
    {
        
        nn++;
        for(int i =1;i<=n;++i)
        {
            a[i] = i;
        }
        printf("Case %d:\n",nn);
        do
        {
            if(a[1]!=1)
                break;
            int flag1 = 0,flag2 = 0;
            for(int i =1;i<=n;++i)
            {
                if(pre[a[i]+a[i+1]]==0&&i!=n)
                    flag1++;
                else if(i==n&&pre[a[i]+a[1]]==0)
                    flag1++;
                else
                {
                    flag2 = 1;
                    break;
                }
            }
            if(flag2)
                continue;
            if(flag1==n)
            {
                for(int i =1;i<=n;++i)
                {
                    if(i==1)    
                        cout<<a[i];
                    else
                    {
                        cout<<" "<<a[i];
                    }
                    
                }
                cout<<endl;
            }

        }while(next_permutation(a+1,a+1+n));
        cout<<endl;
    }
    return 0;
}

E

题目描述

你知道c需要中的缩写吗?

或者你知道ACM比赛中一些缩写的词组吗?

像Presentation Error (PE),Wrong Answer (WA),time limit exceeded (TLE)。

往往这些缩写可以带给我们一些方便的好处,也可以相当于一些专业词组。

现在要求你自己来定义缩写,根据你若输入的单词,注意,输入词组,输出他的缩写。

输入描述:

代码语言:javascript
复制
输入的第一行是一个整数T,表示一共有T组测试数据。接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;单词长度不超过10,由一个或多个空格分隔这些单词。

输出描述:

代码语言:javascript
复制
请为每组测试数据输出规定的缩写,每组输出占一行。

示例1

输入

代码语言:javascript
复制
3
Cool Down
Attack Disabled Carry
xiao xue sheng

输出

代码语言:javascript
复制
CD
ADC
XXS

说明

代码语言:javascript
复制
每行的单词不仅仅有一个,所以cin/scanf是不行的
代码语言:javascript
复制
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<cctype>
using namespace std;
string a;
int main()
{
    int n;
    cin>>n;
    getchar();
    while(n--)
    {
        getline(cin,a,'\n');
        string b;
        b = a[0];
        for(int i =0;i<a.length();++i)
        {
            if(a[i]==' '&&a[i+1]!=' ')
                b+=a[i+1];
        }
        transform(b.begin(),b.end(),b.begin(),::toupper);
        // for(int i =0;i<b.length();++i)
        // {
        //     transform(b.begin(),b.end(),b.begin(),::toupper);
        // }
        //cout<<islower(b[0])<<endl;
        cout<<b<<endl;
        a.clear();
        b.clear();
    }
    return 0;
}

F

题目描述

有一群耗纸,它们喜欢在ACM协会的集训楼的电梯里反复玩弄电梯(假定有这栋楼。。。),这些耗纸定义了一种规则,当他们从一楼涌进电梯之后,每只耗纸都会在电梯上啪啪啪,到处乱拍,第i只耗纸,把楼层是i的倍数全都按了一遍,也就是说第13只耗纸会把第13,26,39等楼全部按一遍,假设这个电梯的质量比较好,开始的时候全是灭的,而且电梯上的按键,每按一次会亮,再按一次会灭掉,再按一次会亮,周而复始。如果知道会长的女神正在n楼自习,会长身边有n只耗纸,他想要尽快的见到他的女神,但是会长不知道这样n只手贱的耗子在一起坐电梯能不能顺利到达n层,因此他想请hlgrc的acmer们帮他算算,他该不该和这些手贱的耗纸一起坐电梯。

输入描述:

代码语言:javascript
复制
多组测试,每组输入一个数字n(0<n<10^15);当n=0时,程序退出,该组数据不运行;

输出描述:

代码语言:javascript
复制
如果会长该和这些手贱的耗纸一起坐电梯,输出“Goddess,I'm coming~~~”否则输出“Farewell~”

示例1

输入

代码语言:javascript
复制
11
13
1
0

输出

代码语言:javascript
复制
Farewell~
Farewell~
Goddess,I'm coming~~~

说明

代码语言:javascript
复制
第一组样例,一共有11只耗子,第一只耗纸会把所有的楼层全部按一遍,第二只会把2,4,6,8,10按一遍,...直到第11只耗纸把11层按一遍,那么电梯最后会去的楼层有只有4楼,会长懒得爬楼梯,因此见不到自己的女神,而女神也因为等不到会长,抑郁而终。
代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; 

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    ll n;
	while(cin>>n)
	{
		if(n==0)
			break;
		 ll m=sqrt(n);
	    if(m*m==n)
	    	cout<<"Goddess,I'm coming~~~"<<endl;
	    else
	    	cout<<"Farewell~"<<endl;
	}

    return 0;
}

G

题目描述

作为ACM协会的成员,这段时间最盼望的日子就是新生赛那几天。成绩再过几个小时就公布了,会长想给一直顽强拼搏的的参赛队员发一笔奖金。

但是会长就在考虑一个问题:如果每个同学的奖金额都知道,最少需要准备多少张人民币,才能在给每位同学发奖金的时候都不用会长找零呢?

这里假设同学的奖金都是正整数,单位元,人民币一共有100元、50元、20元、10元、5元和1元六种。

输入描述:

代码语言:javascript
复制
第一行为正整数T,输入数据包含T个测试实例,每个测试实例的第一行是一个整数n(n<100),表示同学的人数,然后是n个同学的奖金。

输出描述:

代码语言:javascript
复制
对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。

示例1

输入

代码语言:javascript
复制
2
3
1 2 3
2
500 500

输出

代码语言:javascript
复制
6
10

说明

代码语言:javascript
复制
哈理工荣成新生赛
代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int T;cin>>T;
    while(T--)
    {
    	ll sum=0;
    	
    	int n;cin>>n;
    	while(n--)
    	{
    		int x;cin>>x;
    		if(x>=100)
    		{
    			sum=sum+x/100;
    			x=x%100;
			}
			if(x>=50)
    		{
    			sum=sum+x/50;
    			x=x%50;
			}
			if(x>=20)
    		{
    			sum=sum+x/20;
    			x=x%20;
			}
			if(x>=10)
    		{
    			sum=sum+x/10;
    			x=x%10;
			}
	
			if(x>=5)
    		{
    			sum=sum+x/5;
    			x=x%5;
			}
			if(x)
			{
				sum=sum+x;
				x=0;
			}
			
		}
		cout<<sum<<endl;
	}
    
    return 0;
}

H

题目描述

大家比赛的时候一定要放轻松!你看,刚来参加比赛的菜鸟小一一做不出题目来急的满头大汗!这让她情何以堪!究竟是一道什么题目搞得她这么纠结?我们来看一下吧!

ACM协会招收了许多热爱编程的小萌新,为增进大家友情周末要进行男子拔河比赛。

为了比赛的可看性,现要选出体重较重的男同学,所以按照从轻到重的体重顺序占成一排进行筛选。

求出这些男同学的体重从轻到重的排序。

输入描述:

代码语言:javascript
复制
输入数据有多组,第一行输入男同学的人数n(1<=n<=10),第二行分别输入她们的体重m(150>m>0),以EOF作为结束标志.

输出描述:

代码语言:javascript
复制
输出他们的体重由低到高的序列。结果保留2位小数。

示例1

输入

代码语言:javascript
复制
5
68.00 59.00 66.67 55.55 45.00
2
77 77

输出

代码语言:javascript
复制
45.00 55.55 59.00 66.67 68.00
77.00 77.00

说明

代码语言:javascript
复制
哈理工荣成新生赛
代码语言:javascript
复制
#include<iostream>
#include<algorithm>
using namespace std;
double a[100000];
int main()
{
    int n ;
    while(cin>>n)
    {
        for(int i =0;i<n;++i)
        {
            cin>>a[i];
        }
        sort(a,a+n);
        for(int i =0;i<n;++i)
        {
            if(i==0)
                printf("%.2lf",a[i]);
            else
            {
                printf(" %.2lf",a[i]);
            }
            
        }
        cout<<endl;
    }
    return 0;
}

I

题目描述

ACM协会的会员越来越多了,训练量也越来也大,为使会员们在高强度的训练下得到放松,会员之间更加亲近,协会想为会员们准备一个晚会,晚会节目由会员们表演。

消息一出,报名要表演节目的会员很多,多达N个,尤其是才华横溢的史老师,点名要上台唱毛不易的《消愁》,但是由于场地和时间有限,只能从这N个人中选M个,请你帮会长算一算,一共有多少种选择方法?

输入描述:

代码语言:javascript
复制
数据的第一行是一个正整数T,接下来有T组数据,每组数据占一行。每组数据包含两个整数N(来报名的人数,1<=N<=30),M(节目需要的人数0<=M<=30)。

输出描述:

代码语言:javascript
复制
每组数据输出一个整数,每个输出占一行。

示例1

输入

代码语言:javascript
复制
5
3 2
5 3
4 4
3 6
8 0

输出

代码语言:javascript
复制
3
10
1
0
1
代码语言:javascript
复制
t = int(input())

for case in range(t):
    x = y = 1
  
    a,b = map(int,input().split())
    
    j = a
    for i in range(1,b+1):
        x = x*i
        y = y*j
        j = j-1
    print("%d" % ( y/x))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-21|,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 输入描述:
  • 输出描述:
  • 输入
  • 输出
  • B
    • 题目描述
      • 输入描述:
        • 输出描述:
          • 输入
            • 输出
            • C
              • 题目描述
                • 输入描述:
                  • 输出描述:
                    • 输入
                      • 输出
                        • 备注:
                        • E
                          • 题目描述
                            • 输入描述:
                              • 输出描述:
                                • 输入
                                  • 输出
                                    • 说明
                                    • F
                                      • 题目描述
                                        • 输入描述:
                                          • 输出描述:
                                            • 输入
                                              • 输出
                                                • 说明
                                                • G
                                                  • 题目描述
                                                    • 输入描述:
                                                      • 输出描述:
                                                        • 输入
                                                          • 输出
                                                            • 说明
                                                            • H
                                                              • 题目描述
                                                                • 输入描述:
                                                                  • 输出描述:
                                                                    • 输入
                                                                      • 输出
                                                                        • 说明
                                                                        • I
                                                                          • 题目描述
                                                                            • 输入描述:
                                                                              • 输出描述:
                                                                                • 输入
                                                                                  • 输出
                                                                                  领券
                                                                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档