news 2026/5/21 18:59:17

洛谷-入门6-函数与结构体2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
洛谷-入门6-函数与结构体2

P5461 赦免战俘

题目背景

借助反作弊系统,一些在月赛有抄袭作弊行为的选手被抓出来了!

题目描述

现有 2n×2n(n≤10) 名作弊者站成一个正方形方阵等候 kkksc03 的发落。kkksc03 决定赦免一些作弊者。他将正方形矩阵均分为 4 个更小的正方形矩阵,每个更小的矩阵的边长是原矩阵的一半。其中左上角那一个矩阵的所有作弊者都将得到赦免,剩下 3 个小矩阵中,每一个矩阵继续分为 4 个更小的矩阵,然后通过同样的方式赦免作弊者……直到矩阵无法再分下去为止。所有没有被赦免的作弊者都将被处以棕名处罚。

给出 n,请输出每名作弊者的命运,其中 0 代表被赦免,1 代表不被赦免。

输入格式

一个整数 n。

输出格式

2n×2n 的 01 矩阵,代表每个人是否被赦免。数字之间有一个空格。

输入输出样例

输入 #1复制

3

输出 #1复制

0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

实现代码:

#include<bits/stdc++.h> using namespace std; const int N=10000; int n,t; int s[N][N]; int main(){ cin>>n; t=1<<n; for(int i=1;i<=t;i++){ for(int j=1;j<=t-i;j++){ cout<<"0 "; } s[2][1]=1; for(int j=1;j<=i;j++){ if(i==j){ s[i][j]=1; } else{ s[i][j]=s[i-1][j]+s[i-1][j-1]; } } for(int j=1;j<i;j++){ if(s[i][j]%2==0){ cout<<"0 "; } else{ cout<<"1 "; } } cout<<1<<endl; } return 0; }

P5740 【深基7.例9】最厉害的学生

题目描述

现有 N 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的仅有英文小写字母的字符串)、语文、数学、英语成绩(均为不超过 150 的自然数)。总分最高的学生就是最厉害的,请输出最厉害的学生各项信息(姓名、各科成绩)。如果有多个总分相同的学生,输出靠前的那位。

输入格式

第一行输入一个正整数 N,表示学生个数。

第二行开始,往下 N 行,对于每一行首先先输入一个字符串表示学生姓名,再输入三个自然数表示语文、数学、英语的成绩。均用空格相隔。

输出格式

输出最厉害的学生。

输入输出样例

输入 #1复制

3 senpai 114 51 4 lxl 114 10 23 fafa 51 42 60

输出 #1复制

senpai 114 51 4

说明/提示

数据保证,1≤N≤1000,姓名为长度不超过 8 的字符串,语文、数学、英语成绩均为不超过 150 的自然数。

实现代码:

#include <bits/stdc++.h> using namespace std; struct node{ int id; string name; int c,m,e; int sum; }; int n; node a[1010]; bool cmp(node a,node b){ if(a.sum!=b.sum){ return a.sum>b.sum; } else return a.id<b.id; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].name>>a[i].c>>a[i].m>>a[i].e; a[i].sum=a[i].c+a[i].m+a[i].e; a[i].id=i; } sort(a+1,a+1+n,cmp); cout<<a[1].name<<" "<<a[1].c<<" "<<a[1].m<<" "<<a[1].e; return 0; }

P5741 【深基7.例10】旗鼓相当的对手 - 加强版

题目描述

现有 N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的字符串,没有空格)、语文、数学、英语成绩(均为不超过 150 的自然数)。如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在我们想知道这些同学中,哪些是“旗鼓相当的对手”?请输出他们的姓名。

所有人的姓名是按照字典序给出的,输出时也应该按照字典序输出所有对手组合。也就是说,这对组合的第一个名字的字典序应该小于第二个;如果两个组合中第一个名字不一样,则第一个名字字典序小的先输出;如果两个组合的第一个名字一样但第二个名字不同,则第二个名字字典序小的先输出。

输入格式

第一行输入一个正整数 N,表示学生个数。

第二行开始,往下 N 行,对于每一行首先先输入一个字符串表示学生姓名,再输入三个自然数表示语文、数学、英语的成绩。均用空格相隔。

输出格式

输出若干行,每行两个以空格隔开的字符串,表示一组旗鼓相当的对手。注意题目描述中的输出格式。

输入输出样例

输入 #1复制

3 fafa 90 90 90 lxl 95 85 90 senpai 100 80 91

输出 #1复制

fafa lxl lxl senpai

说明/提示

数据保证,1≤N≤1000,姓名为长度不超过 8 的字符串,语文、数学、英语成绩均为不超过 150 的自然数。

实现代码:

#include <bits/stdc++.h> using namespace std; const int N=1010; struct node{ string name; int c,m,e; int sum; }; node a[N]; int n; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].name>>a[i].c>>a[i].m>>a[i].e; a[i].sum=a[i].c+a[i].m+a[i].e; } for(int i=1;i<n;i++){ for(int j=i+1;j<=n;j++){ if(abs(a[i].c-a[j].c)<=5&&abs(a[i].m-a[j].m)<=5&& abs(a[i].e-a[j].e)<=5&&abs(a[i].sum-a[j].sum)<=10){ cout<<a[i].name<<" "<<a[j].name<<endl; } } } return 0; }

P5742 【深基7.例11】评等级

题目描述

现有 N 名同学,每名同学需要设计一个结构体记录以下信息:学号、学业成绩和素质拓展成绩、综合分数(实数)。每行读入同学的学号、学业成绩和素质拓展成绩,并且计算综合分数(分别按照 70% 和 30% 权重累加),存入结构体中。还需要在结构体中定义一个成员函数,返回该结构体对象的学业成绩和素质拓展成绩的总分。

然后需要设计一个函数,其参数是一个学生结构体对象,判断该学生是否“优秀”。优秀的定义是学业和素质拓展成绩总分大于140 分,且综合分数不小于80 分。

当然通过本题很容易啦,本题只是为了帮助你训练结构体的使用方法。

本题存在精度误差问题,请将a * 0.7 + b * 0.3与 80 比较 转化为a * 7 + b * 3与 800 比较。

输入格式

第一行一个整数 N。

接下来 N 行,每行 3 个整数,依次代表学号、学业成绩和素质拓展成绩。

输出格式

N 行,如果第 i 名学生是优秀的,输出Excellent,否则输出Not excellent

输入输出样例

输入 #1复制

4 1223 95 59 1224 50 7 1473 32 45 1556 86 99

输出 #1复制

Excellent Not excellent Not excellent Excellent

说明/提示

数据保证,1≤N≤1000,学号为不超过 100000 的正整数,学业成绩和素质拓展成绩为 0∼100 之间的正整数。

实现代码:

#include <bits/stdc++.h> using namespace std; const int N=1010; struct node{ int id; int c,m; int sum,cnt; }; node a[N]; int n; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].id>>a[i].c>>a[i].m; a[i].sum=a[i].c+a[i].m; a[i].cnt=a[i].c*7+a[i].m*3; } for(int i=1;i<=n;i++){ if(a[i].sum>140&&a[i].cnt>=800){ cout<<"Excellent"<<endl; } else{ cout<<"Not excellent"<<endl; } } return 0; }

P1075 [NOIP 2012 普及组] 质因数分解

题目描述

已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。

输入格式

输入一个正整数 n。

输出格式

输出一个正整数 p,即较大的那个质数。

输入输出样例

输入 #1复制

21

输出 #1复制

7

说明/提示

1≤n≤2×109。

NOIP 2012 普及组 第一题

实现代码:

#include <bits/stdc++.h> using namespace std; const int N=1010; struct node{ int id; int c,m; int sum,cnt; }; node a[N]; int n; int fun(int x){ for(int i=2;i*i<=x;i++){ if(x%i==0){ return 0; } } return 1; } int main(){ cin>>n; for(int i=2;i<=n;i++){ if(fun(i)==1&&n%i==0&&fun(n/i)==1){ cout<<n/i; return 0; } } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/7 15:46:00

AWPortrait-Z人像美化神器:5分钟快速部署,小白也能玩转AI写真

AWPortrait-Z人像美化神器&#xff1a;5分钟快速部署&#xff0c;小白也能玩转AI写真 1. 为什么选择AWPortrait-Z&#xff1f; 想象一下&#xff0c;你有一张普通的自拍照&#xff0c;想要变成专业级写真效果&#xff0c;但不会PS&#xff0c;也没有摄影师朋友帮忙。这就是AW…

作者头像 李华
网站建设 2026/4/3 16:27:00

BiliBiliCCSubtitle:解放B站视频内容价值的字幕处理工具

BiliBiliCCSubtitle&#xff1a;解放B站视频内容价值的字幕处理工具 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否曾为了引用B站视频中的观点而手动逐句记…

作者头像 李华
网站建设 2026/4/1 19:14:01

ProfControl V8的介绍 组合成为模板

作者&#xff1a;刘凌波链接&#xff1a;环野电子, profcontrolhttp://oa.profcontrol.cn/teaching_V8-7926f783c6.html来源&#xff1a;ProfControl组合为模版1、按下SHIFT键&#xff0c;在地图区域空白处按下鼠标左键不松开&#xff0c;移动鼠标则进入框选模式&#xff0c;让…

作者头像 李华
网站建设 2026/4/1 19:12:37

XiaoMusic:让小爱音箱突破音乐限制的开源解决方案

XiaoMusic&#xff1a;让小爱音箱突破音乐限制的开源解决方案 【免费下载链接】xiaomusic 使用小爱音箱播放音乐&#xff0c;音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 你是否遇到过这样的困扰&#xff1a;想听的歌曲在各大…

作者头像 李华
网站建设 2026/4/1 19:11:30

3步解锁老Mac潜能:OpenCore Legacy Patcher系统重生终极指南

3步解锁老Mac潜能&#xff1a;OpenCore Legacy Patcher系统重生终极指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当你的Mac设备被官方贴上"过时&…

作者头像 李华