- [Rated]2025/07/19 新生课前测
[Rated]2025/07/19 新生课前测 题解
- @ 2025-7-19 9:00:57
本次比赛Rated已完成计算
A: 简单的计数。输入用while(cin>>)可以解决。
#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
cin>>a;
int t=0;
while(cin>>b&&b<a){
t++;
}
cout<<t+1;
}
B: 因为数据量较大,所以推荐用欧拉筛(线性筛)。 嵌入一个模板即可。
#include<bits/stdc++.h>
using namespace std;
#define m 5800000
#define m1 100000000
bool f[m1];
int n,cnt=0,p[m];
int main(){
scanf("%d",&n);
for(int i=2;i<=n;i++){
if(!f[i]){
p[++cnt]=i;
}
for(int j=1;j<=cnt;j++){
if(i*p[j]>n)break;
f[i*p[j]]=1;
if(!(i%p[j]))break;
}
}
printf("%d",cnt);
return 0;
}
C: 二维数组,记录k[a][b]是否为true。 记得在读入时同时将k[a][b]与k[b][a]同时设为true. 因为题目没有保证a>b。
#include<bits/stdc++.h>
using namespace std;
int x,y,z,a,b;
bool k[15005][15005];
int main(){
scanf("%d%d%d",&x,&y,&z);
for(int i=0;i<y;i++){
scanf("%d%d",&a,&b);
k[a][b]=1;
k[b][a]=1;
}
for(int i=0;i<z;i++){
scanf("%d%d",&a,&b);
if(k[a][b])printf("1\n");
else printf("0\n");
}
}
D: 基础数组应用。
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int a[n+1];
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
int b;
cin>>b;
cout<<a[b]<<endl;
}
return 0;
}
E: 昨天洛谷的同源题。 n次循环搞定。
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,a[100004],b[100005],x,y,num=0;
signed main(){
cin>>n>>x>>y;
num=x;
for(int i=0;i<n;i++){
if(num>=y){
cout<<num;
return 0;
}
cin>>a[i]>>b[i];
if(num<a[i]){
cout<<num;
return 0;
}else{
num-=a[i];
num+=b[i];
}
}
cout<<num;
}
2 comments
-
Hongshi 红石可爱喵! LV 7 SU @ 2025-7-19 9:27:15
本次比赛Rated已完成计算
-
@ 2025-7-19 9:22:50哇!大佬技术力太强了吧!
- 1