【洛谷OJ C++】洛谷题单101 入门2分支结构 题解及学习笔记
洛谷题单101链接:https://www.luogu.com.cn/training/101#problems
笔记及题解目录:
学习笔记:
P5710 【深基3.例2】数的性质
P5711 【深基3.例3】闰年判断
P5712 【深基3.例4】Apples
P5713 【深基3.例5】洛谷团队系统
P5714 【深基3.例7】肥胖问题
P5715 【深基3.例8】三位数排序
P5716 【深基3.例9】月份天数
P1085 [NOIP2004 普及组] 不高兴的津津
P1909 [NOIP2016 普及组] 买铅笔
P1055 [NOIP2008 普及组] ISBN 号码
P1422 小玉家的电费
P1424 小鱼的航程(改进版)
P1888 三角函数
P1046 [NOIP2005 普及组] 陶陶摘苹果
P5717 【深基3.习8】三角形分类
P4414 [COCI2006-2007#2] ABC
代码:
P5710 【深基3.例2】数的性质
P5711 【深基3.例3】闰年判断
P5712 【深基3.例4】Apples
P5713 【深基3.例5】洛谷团队系统
P5714 【深基3.例7】肥胖问题
P5715 【深基3.例8】三位数排序
P5716 【深基3.例9】月份天数
P1085 [NOIP2004 普及组] 不高兴的津津
P1909 [NOIP2016 普及组] 买铅笔
P1055 [NOIP2008 普及组] ISBN 号码
P1422 小玉家的电费
P1424 小鱼的航程(改进版)
P1888 三角函数
P1046 [NOIP2005 普及组] 陶陶摘苹果
P5717 【深基3.习8】三角形分类
P4414 [COCI2006-2007#2] ABC
学习笔记:
P5710 【深基3.例2】数的性质
- 逻辑运算符的组合使用;
- 注意输出格式,使用空格相隔还是换行输出。
P5711 【深基3.例3】闰年判断
从闰年的判断条件中,更为熟练地使用逻辑运算符;“能被 400 整除的年份,或者被 4 整除但不能被 100 整除的年份湿润年”注意后面的那个判断是需要加小括号的。
flag = year%400==0 || (year%4==0 && year%100!=0);
P5712 【深基3.例4】Apples
不要把问题想复杂,想成用字符串输出,直接按输入条件做 if-else 判断,cout 拼接字符串的输出方式就可以了。
P5713 【深基3.例5】洛谷团队系统
- 三目运算符的使用;
- 仔细看题,不要把判断表达式的判断条件漏写了。
P5714 【深基3.例7】肥胖问题
非常简单没有什么地方有困难,需要注意的是计算 ans 变量的时候,提前乘 1.0 将结果改成浮点型。
P5715 【深基3.例8】三位数排序
编写程序前,提前需要把程序步骤想明白,学习了一个新的函数 swap(a, b); 可以用来直接交换 a, b 的值。
P5716 【深基3.例9】月份天数
闰年程序的扩展版;编写程序的时候有一点一直 WA ,是因为自己粗心漏写了 month == 12 这个限制条件。
P1085 [NOIP2004 普及组] 不高兴的津津
- 学会一种程序数据录入的方法;外层 for 循环是数据个数的条件,内层的 cin 进行数据的录入;
- 学会初始化变量,来减少第一次为该变量赋值时不必要的判断;
- 学会用变量来进行小循环内部的变量值的存储。
P1909 [NOIP2016 普及组] 买铅笔
只要梳理好思路并不难的一道题,本题解中用到了 ceil(num) 进行向上取整,需要注意的是需要加头文件 #include <cmath> 。
另外本题解为了测试数据,加入的变量太多了,可以有更简洁的语句。
P1055 [NOIP2008 普及组] ISBN 号码
- 本题用到了字符数组;因为输入的是字符串,所以末尾会有 ‘\0’ 数组要开大一点;注意数字下标是从0开始到存储字长减1结束,一共存储方括号括起来个字符;
- 本题中还用到了,char字符型与int整型之间的转换,当char向int型转换时: ich = ch[i]-'0';当int向char转换时:ch[12] = num%11 +'0';
- 本题中还遇到了逻辑运算符,要注意筛选识别码的条件是或关系还是与关系;
- 注意审题,识别码是num对11的取余,当余数是零时,识别码为'X';
- 做判断时,为了尽量少写代码,表示着识别码是否正确的布尔型变量的默认值,应该随代码思路做合适的修改;
- 及时做判断,学会运用输出语句监视程序变量的变化也很重要。
P1422 小玉家的电费
本题的问题主要出在对判断条件的误判,月用电量区间应该如何做判断?对于计算区间段内的数值,是需要减去区间段第一个数字,还是减去区间段第一个数字加一?
实在是想不清楚的话,就自己在草稿纸上画图判断。
P1424 小鱼的航程(改进版)
此题的解题思路是,对星期的判断,只有知道是工作日内小鱼才会游泳。
所以为了让程序更简单,可以直接对小鱼出行每一天的日期做判断,当某一天是周末时,下一天就是周一了。
对存放距离的变量的数据类型要考虑存的是大的变量,要给到 long long。
P1888 三角函数
此题的解题思路是,先找出最短便和最长边,然后对它们做约分。
找出最短边和最长边就是很基础的三个数大小排列的问题,约分就是用辗转相除法求出来它们的最大公约数,然后分别进行除法运算并输出结果。
P1046 [NOIP2005 普及组] 陶陶摘苹果
这道题非常简单没有什么需要特别注意的。
P5717 【深基3.习8】三角形分类
这道题非常简单没有什么需要特别注意的。
P4414 [COCI2006-2007#2] ABC
这道题非常简单没有什么需要特别注意的。
解题思路:先将数字由小到大排列,再将字符型数组里的ABC按顺序取出,输出相应权重的数字。
代码:
P5710 【深基3.例2】数的性质
#include <iostream>
using namespace std;
int main(){int n;bool flag1 = 0, flag2 = 0;bool res1, res2, res3, res4;cin >> n;if(n%2 == 0){flag1 = 1;}if(n>4 && n<=12){flag2 = 1;}res1 = flag1&&flag2;res2 = flag1||flag2;res3 = (!flag1&&flag2)||(flag1&&!flag2);res4 = !(flag1||flag2);cout << res1 << " "<< res2 << " "<< res3 << " "<< res4;return 0;
}
P5711 【深基3.例3】闰年判断
#include <iostream>
using namespace std;
int main(){int year;bool flag = 0;cin >> year;flag = year%400==0 || (year%4==0 && year%100!=0);cout << flag;return 0;
}
P5712 【深基3.例4】Apples
#include <iostream>
#include <string>
using namespace std;
int main(){int x;cin >> x;if(x==0||x==1){cout << "Today, I ate " << x << " apple.";}else{cout << "Today, I ate " << x << " apples.";}return 0;
}
P5713 【深基3.例5】洛谷团队系统
#include <iostream>
#include <string>
using namespace std;
int main(){int n;string str;cin >> n;str=(5*n <3*n+11) ? "Local" : "Luogu";cout << str;return 0;
}
P5714 【深基3.例7】肥胖问题
#include <iostream>
#include <string>using namespace std;
int main(){double m, h, ans;string str;cin >> m >> h;ans = 1.0 * m / h / h;if(ans<18.5){str = "Underweight";}else if(ans>=18.5 && ans<24){str = "Normal";}else if(ans>=24){str = "Overweight";cout << ans << endl;}cout << str;return 0;
}
P5715 【深基3.例8】三位数排序
#include <iostream>
using namespace std;
int main(){int a, b, c;cin >> a >> b >> c;if(a>b) swap(a,b);if(b>c) swap(b,c);if(a>b) swap(a,b);cout << a << " " << b << " " << c;return 0;
}
P5716 【深基3.例9】月份天数
#include<iostream>
using namespace std;
int main(){int year,month;bool leapyear = 0;cin >> year >> month;// 判断此年是否为闰年 if((year%400==0)||(year%4==0&&year%100!=0)){leapyear = 1;}// 判断此月是否为2月if(month==2) {if(leapyear){cout << 29;}else{cout << 28;}}else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){cout << 31;}else{cout << 30;}return 0;
}
P1085 [NOIP2004 普及组] 不高兴的津津
#include <iostream>
using namespace std;
int main(){int a, b;int dayHours = 0;int unhappyDay = 0;for(int i = 1; i<=7;++i){cin >> a >> b;if((a+b)>8&&(a+b)>dayHours){dayHours = a+b;unhappyDay = i;}} cout << unhappyDay;return 0;
}
P1909 [NOIP2016 普及组] 买铅笔
#include<iostream>
#include<cmath>
using namespace std;
int main(){int n; // 需要的铅笔数量 int num, pay; // 包装内铅笔数量,这种包装的价格 int truenum; // 每次买多少包铅笔 int totalpay;int minpay; // 存放最少总花费cin >> n;for(int i=1;i<=3;i++){cin >> num >> pay;truenum = ceil(1.0*n/num); // ceil向上取整,不小于自变量的最大整数totalpay = (truenum * pay);
// cout << i <<"次的truenum为"<< truenum << ",totalpay为" << totalpay << endl; if(i==1){ // 为 minpay 初始化 minpay = totalpay;
// cout << i << "次的minpay为" << minpay << endl;}if(i!=1 && minpay > totalpay){ minpay = totalpay;
// cout << i << "次的minpay为" << minpay << endl;}}cout << minpay;return 0;
}
P1055 [NOIP2008 普及组] ISBN 号码
#include <iostream>
#include <cstdio>
using namespace std;
int main(){char ch[20]; // 读取识别码单个字符int ich; // 别码单个字符转化为对应的int型 int num = 0; // 用于计算识别码。初始化0 bool flag = 1; // 识别码正误标记。初始化默认值1:识别码正确 int j = 1; // j变量,标记 ISBN数字编号 // 1.接受控制台的输入, 识别码校验 cin >> ch;for(int i = 0; i < 13;++i){ // 循环录入全部字符(13) ,下标0-12if(ch[i]!='-' && i!=12){ich = ch[i]-'0'; // char转int进行计算 num = num + ich * j;++j; } if(i == 12){if(num%11 < 10){if(ch[12]!=(num%11 +'0')){ // int转char ch[12] = num%11 +'0';flag = 0;}}else{if(ch[12]!='X'){ch[12] = 'X';flag = 0;}} } }// 2.针对识别码是对、是错的两种输出方式if(flag){cout << "Right"; }else{cout << ch;}return 0;
}
P1422 小玉家的电费
#include <iostream>
#include <cstdio>
using namespace std;
int main(){int m;float pay;cin >> m;if(m <= 150){pay = 0.4463*m;}else if(m >= 401){pay = 0.4463*150 + 0.4663*(400-150) + 0.5663*(m-400);}else{pay = 0.4463*150 + 0.4663*(m-150); }printf("%.1f", pay);return 0;
}
P1424 小鱼的航程(改进版)
#include<iostream>
using namespace std;
int main(){int x, n;long long kilometre = 0;cin >> x >> n;for(int i = 1; i <= n; i++){if(x!=6 && x!=7){kilometre = kilometre + 250;}if(x==7){x = 1;}else{x += 1;}}cout << kilometre;return 0;
}
P1888 三角函数
// 什么叫勾股数?可以构成一个直角三角形三边的一组正整数
// 正弦值:对边比邻边
// 较小锐角的正弦值:最小边比邻边 (注意结果要求约分)
#include <iostream>
using namespace std;
int main(){int a, b, c;int gcd, min, max; // 存放三角形最小边与最大边的最大公约数 cin >> a >> b >> c;// 1.将输入的三个勾股数由小到大排列 if(a > b) swap(a, b);if(b > c) swap(b, c);if(a > b) swap(a, b);// 2.对a, c两数进行约分(辗转相除法) gcd = a;max = c; while(max != 0){gcd %= max;swap(gcd, max);} // 3.对分子分母进行约分 min = a / gcd;max = c / gcd;cout << min << "/" << max << endl;return 0;
}
P1046 [NOIP2005 普及组] 陶陶摘苹果
#include<iostream>
#include<cstdio>
using namespace std;
int main(){int height[11]; // 存放高度 int i; // 循环变量 int j = 0; // 存放可够到的苹果个数 for(i = 0; i < 11; i++){scanf("%d", &height[i]);} for(i = 0; i < 10; i++){
// printf("%d\n", height[i]);if(height[10]+30 >= height[i]){j += 1;} } cout << j;return 0;
}
P5717 【深基3.习8】三角形分类
#include <iostream>
using namespace std;
int main(){int a, b, c;cin >> a >> b >> c;// 1.将三条边由小到大排列if(a>b) swap(a, b);if(b>c) swap(b, c);if(a>b) swap(a, b);//cout << a << b << c << endl;// 2.判断 a b c 能否构成一个三角形 if(a+b<=c){cout << "Not triangle" <<endl; return 0;}// 3.直角三角形 a*a+b*b=c*c if(a*a+b*b == c*c){cout << "Right triangle" <<endl; } // 4.锐角三角形 a*aif(a*a+b*b > c*c){cout << "Acute triangle" <<endl; } // 5.钝角三角形if(a*a+b*b < c*c){cout << "Obtuse triangle" <<endl; }// 6.等腰三角形if(a==b){cout << "Isosceles triangle" <<endl; }// 7.等边三角形if(a==b&&a==c){cout << "Equilateral triangle" <<endl;} return 0;
}
P4414 [COCI2006-2007#2] ABC
#include <iostream>
#include <string>
using namespace std;
int main(){int a, b,c;char ABC[4];cin >> a >> b >> c ;cin >> ABC;// 1.先将abc由小到大排列if(a>b) swap(a, b);if(b>c) swap(b, c);if(a>b) swap(a, b); // 2.排列for(int i=0; i<3; i++){if(ABC[i]=='A') cout << a;if(ABC[i]=='B') cout << b;if(ABC[i]=='C') cout << c;cout<<" ";}return 0;
}
【洛谷OJ C++】洛谷题单101 入门2分支结构 题解及学习笔记相关推荐
- 【洛谷OJ C++】洛谷题单100 入门1顺序结构 题解及学习笔记
洛谷平台题单100链接:https://www.luogu.com.cn/training/100#problems 目录 学习笔记: P1001 A+B Problem P1000 超级玛丽游戏 P ...
- 洛谷oj题单【入门2】分支结构-入门难度(Java)
洛谷oj题单[入门2]分支结构-入门难度(Java) 来源:https://www.luogu.com.cn/training/101#problems P5709 [深基2.习6]Apples Pr ...
- python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式
本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...
- 洛谷oj题单【入门1】顺序结构-入门难度(Java)
来源:https://www.luogu.com.cn/training/100#problems B2002 Hello,World! public class Main {public stati ...
- 洛谷入门题单 --【入门1】顺序结构 题解
- [P1001 A+B Problem] - [P1000 超级玛丽游戏] - [P5703 [深基2.例5]苹果采购] - [P5704 [深基2.例6]字母转换] - [P5705 [深基2.例 ...
- 洛谷 能力提升综合题单Part1 入门阶段 P1089 津津的储蓄计划 带注释
题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在 ...
- 洛谷递推与递归题单之南蛮图腾
南蛮图腾 题目背景 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会 ...
- 洛谷2766:[网络流24题]最长不下降子序列问题——题解
https://www.luogu.org/problemnew/show/P2766 给定正整数序列x1,...,xn . (1)计算其最长不下降子序列的长度s. (2)计算从给定的序列中最多可取出 ...
- 【day8】【洛谷算法题】-P3954成绩-刷题反思集[入门1顺序结构][附一周思考总结]
最新文章
- docker 离线安装 mysql_Oracle数据库之docker 离线环境安装oracle
- 一张图实现3D人脸建模!这是中科院博士生入选ECCV的新研究 | 开源
- C#中读写Xml配置文件常用方法工具类
- python列表框_「每日一练」Python列表框部件的运用
- STM32-IO引脚复用-原理和使用
- RabbitMQ配置文件
- MYSQL数据库事务介绍
- java excel导出(基于注解)
- 向左还是往右?Chris Dixon谈何时放弃你的idea
- 利用MS的CASTEP模块模拟Pd(110)表面CO分子的吸附
- 计算机在材料科学中的应用论文,计算机在材料科学中的应用论文(2)
- 最新EyouCMS发布工具
- linux fat get entry,操作系统--主引导程序控制权的转移
- 软件中级设计师 - 计算机网络
- 多线程应用_左圆右方
- 『Python』Excel文件的读取以及DataFrame的相关操作 (2)
- 从源码解析-Android系统启动流程概述 init进程zygote进程SystemServer进程启动流程
- compiz的ubuntu10.04安装
- 小武告诉滨滨每天可以吃一块或者两块巧克力。假设滨滨每天都吃巧克力,问滨滨共有多少种不同的吃完巧克力的方案。
- 关于ITIL、ITIL认证、ITIL的价值
热门文章
- JavaScript charCodeAt() 方法
- 华为p8升级android8系统资源,这些华为手机都可升Android8.0,告诉你必须升EMUI8.0的3个理由...
- ADU87、DCB20X-E等设备以RTSP方式添加第三方相机或录像机教程
- 认知智能+数字伙伴双轮驱动,爱数以数据认知激发组织创新活力
- bebian10主机名,FQDN修改
- c语言课程宣传册,EFI 2015 C,提升企业宣传画册设计
- 微信视频用html5不能用,仿照laya官方demo做了一个视频播放的UI,为啥在微信里不能用?...
- Pareto-Efficient Hybridization for Multi-Objective Recommender Systems
- 2203-C语言基础知识
- 『杭电1411』校庆神秘建筑