题目链接:Round 4 0613
密码:12345678
这次的题目都是英文题,但是都非常简单,都是code forces上div2的A题,最简单的题目,只要把题意读懂了就能做出来。
A题:这个题直接看上去好像很麻烦,得把大写字母转化成小写字母,删除其中的元音字母,在每个辅音字母前加'.',但是因为一个字母要么是元音,要么是辅音,所以只需要把元音跳过,辅音直接带点输出就好了。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[105];
int main()
{
scanf("%s",a);
for(int i=0;i<strlen(a);i++)
{
if(a[i]>=65&&a[i]<=90)
a[i]=a[i]+32;
if(a[i]!='a'&&a[i]!='e'&&a[i]!='i'&&a[i]!='o'&&a[i]!='u'&&a[i]!='y')
printf(".%c",a[i]);
}
return 0;
}
B题:输入MxN大小的矩形,已知多米诺骨牌大小为2x1(可以看做M行N列,多米诺牌大小占2行1列)。求能往矩形里放最多多米诺牌的数量是多少?
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int n,m;
cin>>m>>n;
int ans=0;
int a=m/2;
ans=n*a;
if(m%2==0)
cout<<ans<<endl;
else
cout<<ans+n/2<<endl;
return 0;
}
在博客上看到一种非常简洁的写法:
#include<cstdio>
int main(void)
{
int m, n;
scanf("%d%d", &m, &n);
printf("%d", (n >> 1)*m + (n & 1 ? m >> 1 : 0));
return 0;
}
C题:说有三个人组队去参加比赛,对于比赛的每道题目,如果两个或者两个以上的人会做,那么这个题就能做出来,否则,这个题就做不出来。
对于每组测试数据,第一行为一个小于等于1000的正整数,然后又n行,每行有三个整数,分别表示这三个人对于这三道题的情况,1表示会做,0表示不会做。输出一个正整数,表示他们三个人能做出来的题目数。
#include<cstdio>
int main(void)
{
int n,a,count,sum = 0;
scanf("%d",&n);
while(n--)
{
count = 0;
for (int i=0;i<3;i++)
{
scanf("%d",&a);
if(a)
count++;
}
if(count>1)
sum++;
}
printf("%d", sum);
return 0;
}
D题:给你一个字符串,这个串中只要有连着的0或1,且个数大于等于7,那么就输出YES,没有的话就输出NO。
#include <stdio.h>
#include <string.h>
int main()
{
char s[110];
while(scanf("%s",s)!=EOF)
{
int size=strlen(s);
int cnt=1;
for(int i=0;i<size;i++)
{
if(s[i]==s[i+1])
cnt++;
if(cnt>=7)
{
printf("%YES\n");
break;
}
if(s[i]!=s[i+1])
cnt=1;
}
if(cnt<7)
printf("NO\n");
}
return 0;
}
E题:输入一个由‘+’和数字组成的字符串,要求把数字进行从小到大进行排列,然后把这个字符串输出。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
int main()
{
ios::sync_with_stdio(false);
char a[300];
int b[300];
scanf("%s",a);
int cnt=1;
int len=strlen(a);
for(int i=0;i<len;i++)
{
if(a[i]!='+')
b[cnt++]=a[i]-48;
}
sort(b,b+cnt);
for(int i=0;i<cnt-2;i++)
cout<<b[i]<<"+";
cout<<b[cnt-2]<<endl;
return 0;
}
F题:对一个字符串进行处理,如果它的首字母是小写字母,就把它的首字母变成大写字母,否则,就不处理。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
int main()
{
ios::sync_with_stdio(false);
char a[1010];
scanf("%s",a);
if(a[0]>='a'&&a[0]<='z')
a[0]-=32;
cout<<a<<endl;
return 0;
}