XJOI一级四段题解(g++,即C++),也可视作C++算法竞赛教程
目录
Problem 3536 判断奇偶性
一 题目内容
二 新知识点
三 思路
四 AC代码
Problem 1112 交换变量
一 题目内容
二 新知识点
2.1 swap(a,b)的用法
三 思路
四 AC代码
Problem 8050 逻辑运算运用1
一 题目内容
二 新知识点
2.1 逻辑运算符——与、或、非
2.2 逻辑运算的优先级
三 思路
四 AC代码
Problem 3539 美丽数
一 题目内容
二 新知识点
三 思路
四 AC代码
Problem 3540 优美数
一 题目内容
二 新知识点
三 思路
四 AC代码
Problem 8051 逻辑运算运用2
一 题目内容
二 新知识点
三 思路
四 AC代码
Problem 8054 逻辑运算运用5
一 题目内容
二 新知识点
三 思路
四 AC代码
Problem 1109 行李托运
一 题目内容
二 新知识点
2.1 if-else if-else语句和if-else if语句
三 思路
四 AC代码
Problem 3538 判断直角三角形
一 题目内容
二 新知识点
2.1 勾股定理的逆定理
三 思路
四 AC代码
Problem 1175 分西瓜
一 题目内容
二 新知识点
三 思路
四 AC代码
Problem 3536 判断奇偶性
一 题目内容
时间:0.2s 空间:32M
题目描述:
判断一个整数是奇数还是偶数,如果是奇数,输出"odd", 如果是偶数输出"even"
输入格式:
输入一个整数
输出格式:
输出格式见题目描述
样例输入1:
2
样例输出1:
even
样例输入2:
1
样例输出2:
odd
约定:
二 新知识点
本题没有新知识点。
三 思路
根据偶数的定义,能被2整除的数是偶数,否则就是奇数。明确这点后可使用if-else语句进行判断并输出结果。
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;if(n%2==1){cout<<"odd";}else{cout<<"even";}return 0;
}
Problem 1112 交换变量
一 题目内容
时间:1s 空间:256M
题目描述:
随意输入两个数,,通过交换将大的数放在中,小的数放在中。
输入格式:
输入一行,包含两个整数,
输出格式:
输出两行,每行一个整数,输出交换后的,
样例输入:
4 5
样例输出:
5 4
二 新知识点
2.1 swap(a,b)的用法
对于两个数(int,double等类型),可以通过swap(a,b)交换这两个数。比如:
int a=1,b=2;
swap(a,b);
cout<<a<<" "<<b;
输出结果如下:
2 1
三 思路
用if语句判断是否小于,如果是,就交换两数。
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){int x,y;cin>>x>>y;if(x<y){swap(x,y);}cout<<x<<endl<<y;return 0;
}
Problem 8050 逻辑运算运用1
一 题目内容
时间:0.2s 空间:32M
题目描述:
输入三个数,如果,输出YES,不然输出NO
输入格式:
输入三个整数
输出格式:
输出格式见题目描述
样例输入1:
4 3 2
样例输出1:
YES
样例输入2:
1 3 2
样例输出2:
NO
约定:
二 新知识点
2.1 逻辑运算符——与、或、非
对于两个bool类型的变量,我们有时会想要判断他们是否都成立。这时,就需要用到逻辑运算符之一——与运算。与运算格式如下:
a&&b
只有当a和b都为true时,a&&b的结果才为true,否则为false。
同样地,要判断a和b中是否至少有一个成立,我们要用到或运算,格式如下:
a||b
这时,只要a和b有一个为true,a||b的结果就为true;当a和b都为false时,a||b才为false。
若要判断a是否不成立,需要用到非运算,格式如下:
!a
a为true时,!a为false;a为false时,!a为true。
逻辑运算符一般不单独使用,而是与if语句配合使用。
2.2 逻辑运算的优先级
C++中,非运算的优先级最高,与运算次之,或运算最低。为增强代码的可读性,不管逻辑运算是否按照想要的优先级排列,最好都用括号把逻辑运算括起来(换句话说,如果不添这些括号,可能会让别人和自己读起来费劲些)。例如:
你想要先求a&&b,令其为d,再求d||c。则写出代码如下:
a&&b||c
由于与运算的优先级比或运算高,因此该语句会按照预想的情况运行。但为了增加代码可读性,最好添加括号如下:
(a&&b)||c
但如果要先求c||a,令其为d,再求d&&b,则代码如下:
c||a&&b
显然,a&&b会先被执行,不符合预想情况。则添括号如下:
(c||a)&&b
三 思路
使用a>b&&b>c即可判断,注意不能直接写a>b>c。
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){int a,b,c;cin>>a>>b>>c;if(a>b&&b>c){cout<<"YES";}else{cout<<"NO";}return 0;
}
Problem 3539 美丽数
一 题目内容
时间:0.2s 空间:32M
题目描述:
如果一个数是一个偶数而且大于50,我们称它为美丽数
给你一个数,判断它是否是美丽数
输入格式:
输入一个整数
输出格式:
如果是美丽数,输出"yes", 否则输出"no"
样例输入1:
50
样例输出1:
no
样例输入2:
52
样例输出2:
yes
约定:
二 新知识点
本题没有新知识点。
三 思路
根据题意判断即可,注意判断偶数的方法是n%2==0。
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;if(n>50&&n%2==0){cout<<"yes";}else{cout<<"no";}return 0;
}
Problem 3540 优美数
一 题目内容
题目描述:
如果一个数是一个偶数或者大于50,我们称它为优美数
输入格式:
输入一个整数
输出格式:
如果是优美数,输出"yes", 否则输出"no"
样例输入1:
50
样例输出1:
yes
样例输入2:
2
样例输出2:
yes
约定:
二 新知识点
本题没有新知识点。
三 思路
用或运算连接与,再加以判断即可。
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;if(n%2==0||n>50){cout<<"yes";}else{cout<<"no";}return 0;
}
Problem 8051 逻辑运算运用2
一 题目内容
时间限制:0.2s 内存限制:32M
【题目描述】
当一个数字满足以下两个条件之一时,我们会将其视为“Good数”:
1.数字是5的倍数。
2.数字是3的倍数且数小于等于20。
判断给定的数字是否是一个Good数,并输出“YES”或“NO”。
输入格式
一个整数。
输出格式
“YES”或 “NO”(实际输出没有引号)。
样本输入 1
10
样本输出 1
YES
样本输入 2
21
样本输出 2
NO
约束
二 新知识点
本题没有新知识点。
三 思路
这题的逻辑运算其实不难,但有一个小坑点:
当一个数字满足以下两个条件之一时,我们会将其视为“Good数”
这跟或运算不同。在这道题中,同时满足两个条件的数是不被算作Good数的。所以,为了符合题目要求,我们使用两个bool类型变量a1和a2分别表示该数是否满足两个条件,用语句
(!a1&&a2)||(a1&&!a2)
判断即可。
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){bool a1=false,a2=false; //是否满足两个条件int n;cin>>n;if(n%5==0){a1=true;}if(n%3==0&&n<=20){a2=true;}if((!a1&&a2)||(a1&&!a2)){cout<<"YES";}else{cout<<"NO";}return 0;
}
Problem 8054 逻辑运算运用5
一 题目内容
时间:0.2s 空间:32M
题目描述:
给定3个数a,b,c,若存在两个数之和大于第三个数的三倍,输出YES,不然输出NO
输入格式:
三个整数a,b,c
输出格式:
输出格式见题目描述
样例输入1:
3 4 5
样例输出1:
NO
样例输入2:
3 4 6
样例输出2:
YES
约定:
二 新知识点
本题没有新知识点。
三 思路
依题意,用以下代码判断即可:
a+b>3*c||b+c>3*a||a+c>3*b
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){int a,b,c;cin>>a>>b>>c;if(a+b>3*c||b+c>3*a||a+c>3*b){cout<<"YES";}else{cout<<"NO";}return 0;
}
Problem 1109 行李托运
一 题目内容
时间:1s 空间:256M
题目描述:
计算行李的托运费用:如果行李重量不超过30kg,每公斤0.2元;如果行李重量大于30kg,但是不超过60kg,超过30公斤部分按每公斤0.6元算;如果行李重量超过60公斤,不允许行李托运,报告“NO”。在键盘上输入行李重量,屏幕显示行李托运的结果。
输入格式:
一个整数,表示行李重量
输出格式:
输出一行,如果行李可以托运,输出为一个浮点数(结果保留2位小数点);如果行李不可以托运,则输出“NO”
样例输入:
36
样例输出:
9.60
二 新知识点
2.1 if-else if-else语句和if-else if语句
有时我们需要判断的条件比较复杂,仅靠if-else语句无法满足需求,这时就需要if-else if-else或if-else if语句,前者格式如下:
if(条件1){//语句1
}else if(条件2){//语句2
}else if(条件3){//语句3
}else if(条件4){
...
...
...
...
}else{//语句n
}
若条件1满足,则语句1执行;否则(当条件1不满足时),若条件2满足,则语句2执行;......若条件1~n-1都不满足,则进入else部分,执行语句n。
当然,也可以略去else语句,格式如下所示:
if(条件1){//语句1
}else if(条件2){//语句2
}else if(条件3){//语句3
}else if(条件4){
...
...
...
}else if(条件n){//语句n
}
其执行方式与if-else if-else语句基本相同,只是若条件n也不满足,则直接跳过该语句。
三 思路
依题意判断并计算即可,注意浮点数要保留2位小数输出。
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){int a;cin>>a;if(a>60){cout<<"NO";}else if(a>30){printf("%.2lf",30*0.2+0.6*(a-30));}else{printf("%.2lf",0.2*a);}
}
Problem 3538 判断直角三角形
一 题目内容
时间:0.2s 空间:32M
题目描述:
输入三角形的三条边,判断是否是直角三角形
输入格式:
输入三角形3条边(均为整数)
输出格式:
如果3条边组成的是直角三角形,输出yes否则输出no
样例输入:
3 4 5
样例输出:
yes
约定:
数据保证
二 新知识点
2.1 勾股定理的逆定理
勾股定理的逆定理陈述如下:设的三边满足,则是直角三角形。证明如下:
如图,作使得,,且,则根据勾股定理,。根据,,则。
三 思路
直接判断即可,注意a、b、c的顺序不定。
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){int a,b,c;cin>>a>>b>>c;if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b){cout<<"yes"<<endl;}else{cout<<"no"<<endl;}return 0;
}
Problem 1175 分西瓜
注:此题与CF4A(Codeforces上的第4A题)题意相同。
一 题目内容
时间:1s 空间:256M
题目描述:
给你一个西瓜的重量,问你能否将这个西瓜分成两部分,每个部分都是偶数。
输入格式:
输入一行,包含一个整数,表示西瓜的重量
输出格式:
输出一行,见样例。
样例输入1:
8
样例输出1:
YES, you can divide the watermelon into two even parts.
样例输入2:
3
样例输出2:
NO, you can't divide the watermelon into two even parts.
约定:
提示:
要注意检查你的输出格式要跟样例输出一模一样才能通过,尤其别忘了句子最后的小点哦
二 新知识点
本题没有新知识点。
三 思路
我们知道偶数+偶数=偶数,因此只要是偶数都是YES,但2除外(因为它只能分解成1+1或0+2,但显然不能分成一份重量为0的部分)。
四 AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){int a;cin>>a;if(a%2==0&&a!=2){cout<<"YES, you can divide the watermelon into two even parts.";}else{cout<<"NO, you can't divide the watermelon into two even parts.";}
}
XJOI一级四段题解(g++,即C++),也可视作C++算法竞赛教程相关推荐
- XJOI一级三段题解(g++,即C++),也可视作C++算法竞赛教程
目录 Problem 3567 浮点数 一 题目内容 二 新知识点 2.1 对浮点数精度要求的处理与另一种标准输出 三 思路 四 AC代码 Problem 3572 浮点除法 一 题目内容 二 新知识 ...
- android wear升级方法,LG G Watch官方工具包刷Android wear5.1.1教程(附刷机包)
Android wear5.1.1版本已经开始推送更新了,不过很多LG G Watch的用户已经迫不及待想要升级到5.1.1版本了,下面小编就为大家介绍一下LG G Watch官方工具包刷Androi ...
- 《算法竞赛进阶指南(by 李煜东)》习题题解 集合
又是笔者给自己挖的大坑. 这里是李煜东所著<算法竞赛进阶指南(by 李煜东)>的习题题解集合. 有任何错误请在对应文章下反馈或联系 nicest1919@163.com ,谢谢 qwq 从 ...
- 第三届上海市青少年算法竞赛题解
第三届上海市青少年算法竞赛题解 T1 数洞洞 #include<bits/stdc++.h> using namespace std; int a[11]={0,1,0,0,0,1,0,1 ...
- UVA-1598 交易所 题解答案代码 算法竞赛入门经典第二版
GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 AC代码 有意思的一个题目.书上说这是一个不错的优先队列练习题,但实际上它其实是一个 ...
- XJOI 3287 离散化 题解
时间:1s 空间:128M 题目描述: 给你n个数,输出这n个数离散化后的结果 比如4 100 80 10000 离散化后为1 3 2 4 每个数的值为在原先数组中大小的排名,相同排名输出相同. 如1 ...
- `算法竞赛题解` `LeetCode` 6126. 设计食物评分系统
题目链接 题目 设计一个支持下述操作的食物评分系统: 修改 系统中列出的某种食物的评分. 返回系统中某一类烹饪方式下评分最高的食物. 实现 FoodRatings 类: FoodRatings(Str ...
- 【B站视频教程笔记】基于VSCode和CMake实现C/C++开发 | Linux篇(gcc/g++)(安装、配置、使用详细教程)(VSCode教程)(CMake教程)(精!)
基于VSCode和CMake实现C/C++开发 | Linux篇 文章目录 目录结构 文件编辑 vim(编辑器之神,linux里可以畅通无阻,必学,但不是现在!) 安装GCC和GDB g++编译过程 ...
- 【HIBERNATE框架开发之九】HIBERNATE 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观悲观锁等优化算法)...
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/825.html 1. ...
最新文章
- Python网络爬虫之scrapy爬虫的基本使用
- php引擎文件php.ini优化参数
- Python文档阅读笔记-OpenCV中Match Shapes
- 5375亿元的x86市场:戴尔946亿、HPE 682亿、浪潮517亿、联想345亿、华为256亿、思科218亿、新华三204亿
- 从事 Java 20 年最终却败给了 Python,哭了!
- pythonunittest模块_python单元测试模块unittest
- nyist 488 素数环
- C语言中判断素数的几种方法
- C语言使用scanf_s函数输入的正确姿势
- mysql hive 建表语句_关于Mysql元数据如何生成Hive建表语句注释脚本
- Redis的集群原理
- 蝶形算法(Butterfly Algorithm)未更完
- 解决mac按键精灵鼠标位置不准(连点器)
- 哔哩哔哩助手:bilibili综合辅助扩展Chrome插件
- 视频音频剪辑合并软件 免费强大 LosslessCut
- matplotlib报错:Glyph 25151 (\N{CJK UNIFIED IDEOGRAPH-623F}) missing from current font. func(*args)
- 计算机毕业论文个人小结2500字,毕业论文个人小结
- 如何选用GPU云服务器?
- pdf根据目录生成书签
- 分离非负整数--gyy