您的位置:首页 > 其它

省赛选拔之愚人节专题

2013-03-31 19:35 309 查看
点击打开链接

明天就愚人了,学长在开玩笑啊

A



#include"stdio.h"
#include"string.h"
#include"stdlib.h"
struct node
{
int a;
}aa[100001];
int cmp(const void*a,const void*b)
{
return (*(struct node*)b).a-(*(struct node*)a).a;
}
int main()
{
int n,m,i;
while(scanf("%d%d",&n,&m)!=-1)
{
if(n==0&&m==0)break;
for(i=0;i<n;i++)
scanf("%d",&aa[i].a);
qsort(aa,n,sizeof(aa[0]),cmp);
if(m>n)m=n;
for(i=0;i<m-1;i++)
printf("%d ",aa[i].a);
printf("%d\n",aa[i]);
}
return 0;
}


B



#include"stdio.h"
int main()
{
char s,ss;
int ans;
int i,n;
scanf("%d",&n);
ans=0;
getchar();
scanf("%c",&s);
for(i=1;i<n;i++)
{
scanf("%c",&ss);
if(ss==s)ans++;
s=ss;
}
printf("%d\n",ans);
return 0;
}


C



#include"stdio.h"
int main()
{
int n,ans,i;
char str[5];
scanf("%d",&n);
getchar();
ans=0;
for(i=0;i<n;i++)
{
gets(str);
if(str[0]=='X')
{
if(str[1]=='-')ans--;
else if(str[1]=='+')ans++;
}
else if(str[0]=='+')ans++;
else if(str[0]=='-')ans--;
}
printf("%d\n",ans);
return 0;
}


D

水,唯一的一个难点是文件输入输出!

#include"stdio.h"
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
char s,ss;
int n,m,i,j;
scanf("%d%d",&n,&m);
i=j=0;
if(n<=m)
{
s='G';ss='B';
}
else
{
s='B';ss='G';
}
while(i<n&&j<m)
{
printf("%c%c",s,ss);
i++;j++;
}
while(i<n)
{
printf("B");i++;
}
while(j<m)
{
printf("G");j++;
}
printf("\n");
return 0;
}


E



#include"stdio.h"
int main()
{
int n,k,t,i;
char str[51];
scanf("%d%d",&n,&k);
getchar();
gets(str);
t=0;
while(k>0)
{
k--;
for(i=0;str[i];i++)
{
if(str[i]=='B'&&str[i+1]=='G')
{
str[i]='G';str[i+1]='B';i++;
}
}
}
puts(str);
return 0;
}


F

学长在开玩笑啊,

这题看起来有点难,刚开始没明白题目意思,后来才发现是对字符串中的任意两个字符进行异或运算和或运算,然后用得到的两个结果替换原来的两个字符。

很明显:

11-----01或10

01-----11

10-----11

00-----00;

很明显可以把11,01,10转换成11,10,01,00;

即:只要有1就可以转换成任意的01组合;

所以只需判断两个字符串中是否有1就可以了;

注意在判断之前需要判断两个字符串的长短是否相同。。。

#include"stdio.h"
#include"string.h"
char a[1000001];
char b[1000001];
int main()
{
int n,m,i;
scanf("%s",a);
scanf("%s",b);
n = strlen(a);
m = strlen(b);

if (n != m)
printf("NO\n");
else
{
int x,t;
x=t=0;
for(i=0;i<n;i++)
if(a[i]=='1')x=1;

for(i=0;i<m;i++)
if(b[i]=='1')t=1;

if((x==1&&t==1)||(x==0&&t==0))printf("YES\n");
else printf("NO\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: