当前位置: 首页 > news >正文

洛谷-入门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; }
http://www.jsqmd.com/news/572119/

相关文章:

  • OpenClaw 的模型训练中,是否使用了课程学习(Curriculum Learning)?
  • Qwen3.5-9B效果展示:强逻辑推理与代码生成惊艳案例集
  • 小红书自动评论的‘伪需求’与真风险:聊聊RPA工具养号背后的封号逻辑与合规玩法
  • 大三下期末突击指南:从编译原理到大数据,这6门课我是怎么一周内搞定的
  • 离线语音智能处理平台Buzz:本地化音频转文本全攻略
  • 告别CPU高负载!在RK3588开发板上用FFMedia实现H.264硬件编解码的保姆级教程
  • 如何快速集成Google地图到Flask应用:Flask-GoogleMaps完整指南
  • 新手福音:用快马平台轻松完成ubuntu openclaw机械爪初体验
  • 02-OpenClaw 核心概念详解
  • Linux进程调度机制与性能优化实践
  • Unity Shader 细节贴图技术在不增加显存开销的前提下,有效提升近距离纹理细节的渲染质量
  • ProfControl V8的介绍 阵列生成
  • Synthelix-Auto-Bot终极指南:10分钟掌握多钱包节点自动化管理
  • SOONet模型C盘清理关联场景:自动清理处理后的临时视频文件
  • Beyond Compare 5密钥生成终极指南:从零开始实现完整激活
  • Angular RealWorld服务层设计终极指南:业务逻辑与数据访问的最佳实践
  • VisualGDB跨平台调试避坑指南:用VS远程调试Linux程序(2023最新版配置)
  • FastAPI路由:实现配置指南
  • PvZ Toolkit:植物大战僵尸PC版终极修改器使用指南
  • 03-OpenClaw 环境搭建与配置完全指南
  • 思源宋体TTF:开源字体选型与商业价值指南
  • ProfControl V8的介绍 组合成为模板
  • 告别重复造轮子:用快马AI高效生成定制化jiyutrainer编程练习模块
  • Qwen3.5-2B多场景教程:农业技术人员上传病虫害图→识别种类→推荐药剂
  • 从 SDE 到 AI-Augmented Engineer:2026年大厂面试中展现开发效率跃升的实战流
  • 超分辨数据集全景图:从经典基准到实战选型指南
  • 第1篇 | 挖断光缆全城瘫痪?被折叠的物理底座与光网真相
  • 终极指南:PrivateGPT增量文档处理策略与动态更新解决方案
  • Python EXE逆向解密终极指南:从打包程序到源码还原完整教程
  • UvA Deep Learning Tutorials对抗攻击防御:保护深度学习模型的10个安全策略