平台:首页 - 莆田二中信息学竞赛在线评测系统 (ptezoj.com)。
比赛>>莆田市第四期选拔模拟赛>>在题库中打开。
一、进制转换:
题目描述
我们给定一个数 �a ,我们需要把它转换为二进制的形式,但是 小Z 很调皮,它把转换后的二进制串反转了过来,并且把二进制串每一位上面的 00 改成 11 ,11 改成 00 了,现在请你求出 小Z 处理过后的二进制串。
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
输入格式
共一行,一个数字a 。
输出格式
输出 小Z 处理过后的二进制串。
样例
输入数据 1
13
输出数据 1
0100
样例解释
13 -> 1101 -> 1011 -> 0100
数据规模与约定
对于 100%100% 的数据保证:1≤≤1061≤a≤106。
okk,不讲废话,直接送代码。
#include<bits/stdc++.h>
using namespace std;
int a[10000000],i;
int main(){
int n;
cin>>n;
while(n!=1){
if(n%2==0) a[i]=1;
else a[i]=0;
i++;
n/=2;
}
for(int j=0;j<=i;j++){
cout<<a[j];
}
return 0;
}
//闭眼过。
二、矩形坐标:
题目描述
我们在 x-y 轴坐标系上给出三个点的坐标 xi , yi ,为一个矩形的三个顶点(保证矩形的边与坐标轴平行),现在请你求出矩形的第四个顶点的坐标。
输入格式
共三行,给出矩形三个顶点的坐标 xi , yi 。
输出格式
输出这个矩形第四个顶点的坐标。
样例
输入数据 1
1 1
2 2
2 1
输出数据 1
1 2
数据规模与约定
对于 100%100% 的数据保证: 1≤xi,yi≤10001≤xi,yi≤1000 。
还是那句话:直接送代码!
#include<bits/stdc++.h>
using namespace std;
int x_1,y_1;
int x_2,y_2;
int x_3,y_3;
int x_4,y_4;
int main(){
cin>>x_1>>y_1;
cin>>x_2>>y_2;
cin>>x_3>>y_3;
if(x_1==x_2) x_4=x_3;
else if(x_1==x_3) x_4=x_2;
else x_4=x_1;
if(y_1==y_2) y_4=y_3;
else if(y_1==y_3) y_4=y_2;
else y_4=y_1;
cout<<x_4<<" "<<y_4;
return 0;
}
//应该傻子都会。
三、组队问题:
题目描述
某学校举行了一场比赛,该场比赛需要大家组队参加,每个队伍需要 2 名 A类选手 和 1 名 B类选手组成,但是由于规模限制,学校必须在比赛前淘汰k 名选手,我们想知道最多能有多少支队伍能够参加这场比赛?
输入格式
共一行,给出A类选手数量 m ,B类选手数量n ,必须淘汰的选手数 k 。
输出格式
输出该场比赛最多有多少支队伍。
样例
输入数据 1
6 10 3
输出数据 1
3
数据规模与约定
对于 100%100% 的数据保证: 0≤n,m≤100,0≤k≤n+m 。
代码来啦!
#include<cstdio>
int a,b,k;
int main(){
scanf("%d%d%d",&a,&b,&k);
for(int i=(a+b-k)/3;~i;i--)
if(a>=2*i&&b>=i)
return !printf("%d",i);
}
//还比较难。
四、ZCX的数字
题目描述
我们定义一个正整数的位数为 k 的倍数 ,且每一位都是 99 的数字为 k 阶 "ZCX" 数。
现在我们要问你T 个问题,我们每次给出两个正整数n,k ,请你告诉 小Z 能不能把正整数n 拆分成若干个k 阶 "ZCX" 数的和。
如果可以拆分请输出 1 ,不可以请输出 0 。
输入格式
第 11 行输入数字 �T 表示询问次数
第 22 行 到T+1 行,每行给出两个数n,k 。
输出格式
如果正整数n 可以拆分成 �k 阶 "ZCX" 数 请输出 11 ,不可以请输出 00 。
样例
输入数据 1
3
9999 1
9999 2
9999 3
输出数据 1
1
1
0
数据规模与约定
对于 50%50% 的数据保证:1≤T≤1000,1≤n≤106,k=1 。
对于 100%100% 的数据保证:1≤T≤1000,1≤n≤1011,1≤k≤10 。
来啦!
#include<cstdio>
long long t,n,k,s;
int main(){
scanf("%d",&t);
for(;t--;){
scanf("%lld%lld",&n,&k);
for(s=0;k--;)s=s*10+9;
puts(n%s?"0":"1");
}
return 0;
}
//还行。
五、开关门 :
题目描述
酒店里有 n 个关着的房间,从 1 到n 编了号,第一个服务员把所有的房间门都打开了,第二个服务员把所有 编号是 2 的倍数的房间“相反处理”,第三个服务员把所有编号是 3 的倍数的房间作“相反处理”……,以后都是如此。问第 n 个服务员来过后,有几扇门是关闭的?
输入格式
输入一个整数 n 。
输出格式
一个整数,表示关着的门的数量。
样例
输入数据 1
3
输出数据 1
2
数据规模与约定
对于40%40%的数据,n≤105
对于60%60%的数据,n≤5×106
对于80%80%的数据,n≤1012
对于100%100%的数据,1≤n≤1018
代码飞来了!
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n;
cin>>n;
if(n==1){
cout<<0;
return 0;
}
long long j=3,num=1,t=5;
for(long long i=1;i<=n;){
i+=j;
if(i>=n) break;
num++;
j+=2;
}
cout<<n-num;
return 0;
}
//太简单了!!!
以上就是全部代码。