第四届“传智杯”全国大学生IT技能大赛(初赛A组)
Posted 晁棠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四届“传智杯”全国大学生IT技能大赛(初赛A组)相关的知识,希望对你有一定的参考价值。
思维还是不够,只过了三题。还是不知道自己能不能够进复赛,太菜了自己。
还是要多做思维题。
A题
签到题,根据题意写即可。
#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <cstring>
#include <math.h>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <algorithm>
#define _for(i,a,b) for(int i=(a) ;i<=(b) ;i++)
#define _rep(i,a,b) for(int i=(a) ;i>=(b) ;i--)
#define mst(v,s) memset(v,s,sizeof(v))
#define IOS ios::sync_with_stdio(false),cin.tie(0)
#define ll long long
#define INF 0x7f7f7f7f7f7f7f7f
#define inf 0x7f7f7f7f
#define PII pair<int,int>
using namespace std;
int n,T;
int a[1005],amax,amin=inf;
void ready()
cin>>n;
_for(i,1,n)
cin>>a[i];
amin=min(amin,a[i]);
amax=max(amax,a[i]);
void work()
int d=amax-amin;
_for(i,1,n)
cout<<100*(a[i]-amin)/d<<' ';
int main()
ready();
work();
return 0;
B题
思维题,用二进制去思考。这题当时没有做出来,感谢楊哥赛后指点。
对于一个数x,假设x的二进制为101101。从左往右扫,当扫到第5位为1的时候,当y的这一位为0,后面位数任意时,这个y是必定小于x的。而由于后面位数任意,则x异或y的值必定大于25小于26-1。用前缀和统计这个区间内素数的个数,这样就能计算出答案。然后继续往下扫,扫到第k位为1,则则x异或y的值必定大于2k小于2k+1-1。
(因为洛谷交不了这题,不知道补题的代码对不对)
#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <cstring>
#include <math.h>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <algorithm>
#define _for(i,a,b) for(int i=(a) ;i<=(b) ;i++)
#define _rep(i,a,b) for(int i=(a) ;i>=(b) ;i--)
#define mst(v,s) memset(v,s,sizeof(v))
#define IOS ios::sync_with_stdio(false),cin.tie(0)
#define ll long long
#define INF 0x7f7f7f7f7f7f7f7f
#define inf 0x7f7f7f7f
#define PII pair<int,int>
using namespace std;
const int N=2e6+1e5;
int n,T;
ll sum[N+100],primes[N+100],pi;
void ready()
_for(i,2,N)
sum[i]=1;
_for(i,2,N)
if(sum[i]) primes[++pi]=i;
for(int j=1;primes[j]<=N/i;j++)
sum[i*primes[j]]=0;
if(i%primes[j]==0) break;
_for(i,1,N)
sum[i]+=sum[i-1];
cin>>T;
int qsm(int x,int y)
int cnt=1;
while(y)
if(y&1) cnt*=x;
x=x*x;
y>>=1;
return cnt;
void work()
int x,t=0;
ll ans=0;
cin>>x;
while(x)
if(x&1)
ans+=sum[qsm(2,t+1)-1]-sum[qsm(2,t)-1];
t++;
x>>=1;
cout<<ans<<'\\n';
int main()
ready();
while(T--)
work();
return 0;
C题
用map去储存每个字段名所对应是第几个字段,然后用vector暴力去做即可。
注意,宏定义for之后是≤,注意写的时候的细节。
#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <cstring>
#include <math.h>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <algorithm>
#define _for(i,a,b) for(int i=(a) ;i<=(b) ;i++)
#define _rep(i,a,b) for(int i=(a) ;i>=(b) ;i--)
#define mst(v,s) memset(v,s,sizeof(v))
#define IOS ios::sync_with_stdio(false),cin.tie(0)
#define ll long long
#define INF 0x7f7f7f7f7f7f7f7f
#define inf 0x7f7f7f7f
#define PII pair<int,int>
using namespace std;
int n,T,k,cnt;
vector<int> v[105];
map<int,int> m;
void ready()
cin>>n>>k;
void work()
int t;
cin>>t;
if(t==1)
int p;
cin>>p;
_for(i,1,p)
int x,y;
cin>>x>>y;
if(!m[x]) m[x]=++cnt;
v[m[x]].push_back(y);
else
int x,ymin,ymax,ans=0;
cin>>x>>ymin>>ymax;
x=m[x];
_for(i,0,v[x].size()-1)
if(v[x][i]>=ymin && v[x][i]<=ymax)
ans++;
cout<<ans<<'\\n';
int main()
ready();
while(n--)
work();
return 0;
E题
易得,只有2和3这两个质数异或值为1,其他都不为1。
#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <cstring>
#include <math.h>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <algorithm>
#define _for(i,a,b) for(int i=(a) ;i<=(b) ;i++)
#define _rep(i,a,b) for(int i=(a) ;i>=(b) ;i--)
#define mst(v,s) memset(v,s,sizeof(v))
#define IOS ios::sync_with_stdio(false),cin.tie(0)
#define ll long long
#define INF 0x7f7f7f7f7f7f7f7f
#define inf 0x7f7f7f7f
#define PII pair<int,int>
using namespace std;
int n,T;
void ready()
cin>>T;
void work()
int a,b;
cin>>a>>b;
if(a>b) swap(a,b);
if(a==1 && b==2) cout<<"Yes\\n";
else cout<<"No\\n";
int main()
ready();
while(T--)
work();
return 0;
以上是关于第四届“传智杯”全国大学生IT技能大赛(初赛A组)的主要内容,如果未能解决你的问题,请参考以下文章
2021年全国职业院校技能大赛(中职组)网络安全竞赛第四套试题A模块解析(超级详细)