非官方全题解|欢乐赛#49
2025-06-11 12:35:38
发布于:浙江
不容易啊,终于有次欢乐赛我写完了所有题目 可惜没在比赛结束前写完 不多说什么了,直接进入正题
T1
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a;
cin>>a;
if(a%2!=0) cout<<a/2+1;
else cout<<a/2;
return 0;
}
对了,这些题解适用于新手,各位大佬肯定有更简单的办法,在程序中,我们先输入,接着判断能否被2整除,如果可以,直接输出a/2的结果,否则,输出a/2再加上1
T2
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,r,k,p,sum,max=0;
cin>>n>>r;
while(n){
cin>>k>>p;
sum=r/p*k;
if(sum>max) max=sum;
n--;
}
cout<<max;
return 0;
}
先输入,接着算出美味度总和(总钱数/单价*美味度),接着进行比较,如果比max大,那么存入max,最后输出max 还不如直接用max函数
T3
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,a[5555],c;
cin>>n;
for(int i=0;i<n;i++){
c=0;
cin>>a[i];
for(int j=0;j<i;j++){
if(a[i]==a[j]) c++;
}
if(c==0) cout<<a[i]<<" ";
}
return 0;
}
这还是一个"笨"方法,输入a[i]时执行i-1次,如果a[i]已存在,c就自增,如果最后c==0,就说明a[i]这个数字没有在数组中,所以直接输出,否则不输出
T4
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,t,sum,cnt=0,c;
cin>>n>>m>>t;
for(int j=1;j<=n;j++){
c=0;
for(int i=j;i<=j+m;i++){
sum=0;
int g=i;
while(g!=0){
sum+=g%10;
g/=10;
}
if(sum%t==0) c++;
}
if(c>=1) cnt++;
}
cout<<cnt;
return 0;
}
这里我选择慢慢枚举是否是幸运数,一个范围内,把每个数字的数位和算出来,如果有符合要求的,也就是能被t整除的,那么cnt自增,注意是一个范围内有符合要求的,cnt才自增,就算一个范围内有多个,cnt也只能+1
T5
#include<bits/stdc++.h>
using namespace std;
struct d{
int x,y,id;
}p[10000000];
bool cmp(d q,d w){
if(q.x!=w.x) return q.x>w.x;
else if(q.y!=w.y) return q.y<w.y;
else return q.id<w.id;
}
int main(){
int n,a,b,c,d,cnt=0;
cin>>n>>a>>b;
for(int i=0;i<n;i++){
cin>>c>>d;
if(c>=a&&d<=b){
p[cnt].id=i+1;
p[cnt].x=c;
p[cnt].y=d;
cnt++;
}
}
sort(p,p+cnt,cmp);
for(int i=0;i<cnt;i++) cout<<p[i].id<<" ";
return 0;
}
这题难度就上来了,我那时不知道做了多久,先输入c和d,先要看它符不符合要求,如果符合,加入数组,不符合,就不加入,然后进行比较,比较甜度,酸度,如都相等,就按编号输出,最后一个for循环输出
T6
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a,b[2222][2222];
cin>>a;
for(int i=1;i<=a;i++)
for(int j=1;j<=a;j++)
cin>>b[i][j];
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
if(i==0||i==a-1||j==0||j==a-1){
cout<<b[a-j][i+1]<<" ";
}
else{
cout<<b[i+1][j+1]<<" ";
}
}
cout<<endl;
}
return 0;
}
说句实话,这道题难度感觉不如上一题,这题就是利用二维数组进行输入,输出时,进行判断,判断它是不是矩阵边上的数字,如果是,那么对输出的数进行一些调整,把原来要输出的b[i+1][j+1]换成b[a-j][i+1],从而实现矩阵旋转的效果,如果不是,就直接输出,最后,要记得在外层循环中写上换行 给个赞吧,求求了
全部评论 4
T6 这数组不会爆?
3天前 来自 广东
0还真的没爆
3天前 来自 浙江
0ACGO神秘评测机
3天前 来自 广东
0?
3天前 来自 浙江
0
ddd
3天前 来自 浙江
0ddd
3天前 来自 浙江
0ddd
3天前 来自 浙江
0
有帮助,赞一个