A
最近ACM协会的同学总是利用休息的时间来玩LOL,而且一不小心就玩过头,就耽误了培训时间,这让会长很头疼。玩LOL的同学都知道LOL的全英文名是League of Legends,那么问题来了,如果给你这个单词leagueofl,也就是league这个单词加of这个单词加字母l,然后给你一个全部由小写英文字母组成的字符串,希望这个串中含leagueofl这个单词尽量多。例如串是eagueofaaalltyleagueofl,那么我们可以整理成leagueoflleagueoflaaaty,那么这个串中最多含有两个这个单词。
包含多组数据,输入一串字符串全部有小写英文字母组成。(长度不超过100)
这个串中所包含的最多leagueofl的个数。
示例1
eagueofaaalltyleagueofl
2
#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;
}
不同的游戏有着不同的开始提示,像Are you really?Go!或者Can you start?。再一些大型的比赛中也有一些提示语,像Wa,Ac.等等。所以现在要求你输出一句提示语:Do you want to play ACM?(yes\no)
无
在一行中输出这一句话,所有符号均为英文符号。一定要仔细
示例1
无
Do you want to play ACM?(yes\no)
#include<iostream>
using namespace std;
int main()
{
cout<<"Do you want to play ACM?(yes\\no)"<<endl;
return 0;
}
如图所示为一个由n个圆圈构成的圆环。将自然数1,2,…,n放入圆圈内,并且要求任意两个相邻的圆圈内的数字之和为素数。请问给你圆圈数,你能给出放置自然数的所有正确方案吗?
注意:圆圈中的数字一定是从1开始的,并且连续不重复。
输入包含多组测试数据。每组输入占一行,为整数n(0<n<20),表示圆圈数。
对于每组输入,输出所有正确的方案,按字典序从小到大排序。每组输出后输出一个空行。具体输出格式见输出样例。
示例1
6
8
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
注意:只能按照顺时针方向放置数字。
#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;
}
你知道c需要中的缩写吗?
或者你知道ACM比赛中一些缩写的词组吗?
像Presentation Error (PE),Wrong Answer (WA),time limit exceeded (TLE)。
往往这些缩写可以带给我们一些方便的好处,也可以相当于一些专业词组。
现在要求你自己来定义缩写,根据你若输入的单词,注意,输入词组,输出他的缩写。
输入的第一行是一个整数T,表示一共有T组测试数据。接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;单词长度不超过10,由一个或多个空格分隔这些单词。
请为每组测试数据输出规定的缩写,每组输出占一行。
示例1
3
Cool Down
Attack Disabled Carry
xiao xue sheng
CD
ADC
XXS
每行的单词不仅仅有一个,所以cin/scanf是不行的
#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;
}
有一群耗纸,它们喜欢在ACM协会的集训楼的电梯里反复玩弄电梯(假定有这栋楼。。。),这些耗纸定义了一种规则,当他们从一楼涌进电梯之后,每只耗纸都会在电梯上啪啪啪,到处乱拍,第i只耗纸,把楼层是i的倍数全都按了一遍,也就是说第13只耗纸会把第13,26,39等楼全部按一遍,假设这个电梯的质量比较好,开始的时候全是灭的,而且电梯上的按键,每按一次会亮,再按一次会灭掉,再按一次会亮,周而复始。如果知道会长的女神正在n楼自习,会长身边有n只耗纸,他想要尽快的见到他的女神,但是会长不知道这样n只手贱的耗子在一起坐电梯能不能顺利到达n层,因此他想请hlgrc的acmer们帮他算算,他该不该和这些手贱的耗纸一起坐电梯。
多组测试,每组输入一个数字n(0<n<10^15);当n=0时,程序退出,该组数据不运行;
如果会长该和这些手贱的耗纸一起坐电梯,输出“Goddess,I'm coming~~~”否则输出“Farewell~”
示例1
11
13
1
0
Farewell~
Farewell~
Goddess,I'm coming~~~
第一组样例,一共有11只耗子,第一只耗纸会把所有的楼层全部按一遍,第二只会把2,4,6,8,10按一遍,...直到第11只耗纸把11层按一遍,那么电梯最后会去的楼层有只有4楼,会长懒得爬楼梯,因此见不到自己的女神,而女神也因为等不到会长,抑郁而终。
#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;
}
作为ACM协会的成员,这段时间最盼望的日子就是新生赛那几天。成绩再过几个小时就公布了,会长想给一直顽强拼搏的的参赛队员发一笔奖金。
但是会长就在考虑一个问题:如果每个同学的奖金额都知道,最少需要准备多少张人民币,才能在给每位同学发奖金的时候都不用会长找零呢?
这里假设同学的奖金都是正整数,单位元,人民币一共有100元、50元、20元、10元、5元和1元六种。
第一行为正整数T,输入数据包含T个测试实例,每个测试实例的第一行是一个整数n(n<100),表示同学的人数,然后是n个同学的奖金。
对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。
示例1
2
3
1 2 3
2
500 500
6
10
哈理工荣成新生赛
#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;
}
大家比赛的时候一定要放轻松!你看,刚来参加比赛的菜鸟小一一做不出题目来急的满头大汗!这让她情何以堪!究竟是一道什么题目搞得她这么纠结?我们来看一下吧!
ACM协会招收了许多热爱编程的小萌新,为增进大家友情周末要进行男子拔河比赛。
为了比赛的可看性,现要选出体重较重的男同学,所以按照从轻到重的体重顺序占成一排进行筛选。
求出这些男同学的体重从轻到重的排序。
输入数据有多组,第一行输入男同学的人数n(1<=n<=10),第二行分别输入她们的体重m(150>m>0),以EOF作为结束标志.
输出他们的体重由低到高的序列。结果保留2位小数。
示例1
5
68.00 59.00 66.67 55.55 45.00
2
77 77
45.00 55.55 59.00 66.67 68.00
77.00 77.00
哈理工荣成新生赛
#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;
}
ACM协会的会员越来越多了,训练量也越来也大,为使会员们在高强度的训练下得到放松,会员之间更加亲近,协会想为会员们准备一个晚会,晚会节目由会员们表演。
消息一出,报名要表演节目的会员很多,多达N个,尤其是才华横溢的史老师,点名要上台唱毛不易的《消愁》,但是由于场地和时间有限,只能从这N个人中选M个,请你帮会长算一算,一共有多少种选择方法?
数据的第一行是一个正整数T,接下来有T组数据,每组数据占一行。每组数据包含两个整数N(来报名的人数,1<=N<=30),M(节目需要的人数0<=M<=30)。
每组数据输出一个整数,每个输出占一行。
示例1
5
3 2
5 3
4 4
3 6
8 0
3
10
1
0
1
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))