洛谷题单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】数的性质

  1. 逻辑运算符的组合使用;
  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】洛谷团队系统

  1. 三目运算符的使用;
  2. 仔细看题,不要把判断表达式的判断条件漏写了。

P5714 【深基3.例7】肥胖问题

非常简单没有什么地方有困难,需要注意的是计算 ans 变量的时候,提前乘 1.0 将结果改成浮点型。

P5715 【深基3.例8】三位数排序

编写程序前,提前需要把程序步骤想明白,学习了一个新的函数 swap(a, b); 可以用来直接交换 a, b 的值。

P5716 【深基3.例9】月份天数

闰年程序的扩展版;编写程序的时候有一点一直 WA ,是因为自己粗心漏写了 month == 12 这个限制条件。

P1085 [NOIP2004 普及组] 不高兴的津津

  1. 学会一种程序数据录入的方法;外层 for 循环是数据个数的条件,内层的 cin 进行数据的录入;
  2. 学会初始化变量,来减少第一次为该变量赋值时不必要的判断;
  3. 学会用变量来进行小循环内部的变量值的存储。

P1909 [NOIP2016 普及组] 买铅笔

只要梳理好思路并不难的一道题,本题解中用到了 ceil(num) 进行向上取整,需要注意的是需要加头文件 #include <cmath> 。

另外本题解为了测试数据,加入的变量太多了,可以有更简洁的语句。

P1055 [NOIP2008 普及组] ISBN 号码

  1. 本题用到了字符数组;因为输入的是字符串,所以末尾会有 ‘\0’ 数组要开大一点;注意数字下标是从0开始到存储字长减1结束,一共存储方括号括起来个字符;
  2. 本题中还用到了,char字符型与int整型之间的转换,当char向int型转换时:    ich = ch[i]-'0';当int向char转换时:ch[12] = num%11 +'0';
  3. 本题中还遇到了逻辑运算符,要注意筛选识别码的条件是或关系还是与关系;
  4. 注意审题,识别码是num对11的取余,当余数是零时,识别码为'X'
  5. 做判断时,为了尽量少写代码,表示着识别码是否正确的布尔型变量的默认值,应该随代码思路做合适的修改;
  6. 及时做判断,学会运用输出语句监视程序变量的变化也很重要。

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分支结构 题解及学习笔记相关推荐

  1. 【洛谷OJ C++】洛谷题单100 入门1顺序结构 题解及学习笔记

    洛谷平台题单100链接:https://www.luogu.com.cn/training/100#problems 目录 学习笔记: P1001 A+B Problem P1000 超级玛丽游戏 P ...

  2. 洛谷oj题单【入门2】分支结构-入门难度(Java)

    洛谷oj题单[入门2]分支结构-入门难度(Java) 来源:https://www.luogu.com.cn/training/101#problems P5709 [深基2.习6]Apples Pr ...

  3. python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式

    本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...

  4. 洛谷oj题单【入门1】顺序结构-入门难度(Java)

    来源:https://www.luogu.com.cn/training/100#problems B2002 Hello,World! public class Main {public stati ...

  5. 洛谷入门题单 --【入门1】顺序结构 题解

    - [P1001 A+B Problem] - [P1000 超级玛丽游戏] - [P5703 [深基2.例5]苹果采购] - [P5704 [深基2.例6]字母转换] - [P5705 [深基2.例 ...

  6. 洛谷 能力提升综合题单Part1 入门阶段 P1089 津津的储蓄计划 带注释

    题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在 ...

  7. 洛谷递推与递归题单之南蛮图腾

    南蛮图腾 题目背景 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会 ...

  8. 洛谷2766:[网络流24题]最长不下降子序列问题——题解

    https://www.luogu.org/problemnew/show/P2766 给定正整数序列x1,...,xn . (1)计算其最长不下降子序列的长度s. (2)计算从给定的序列中最多可取出 ...

  9. 【day8】【洛谷算法题】-P3954成绩-刷题反思集[入门1顺序结构][附一周思考总结]

最新文章

  1. docker 离线安装 mysql_Oracle数据库之docker 离线环境安装oracle
  2. 一张图实现3D人脸建模!这是中科院博士生入选ECCV的新研究 | 开源
  3. C#中读写Xml配置文件常用方法工具类
  4. python列表框_「每日一练」Python列表框部件的运用
  5. STM32-IO引脚复用-原理和使用
  6. RabbitMQ配置文件
  7. MYSQL数据库事务介绍
  8. java excel导出(基于注解)
  9. 向左还是往右?Chris Dixon谈何时放弃你的idea
  10. 利用MS的CASTEP模块模拟Pd(110)表面CO分子的吸附
  11. 计算机在材料科学中的应用论文,计算机在材料科学中的应用论文(2)
  12. 最新EyouCMS发布工具
  13. linux fat get entry,操作系统--主引导程序控制权的转移
  14. 软件中级设计师 - 计算机网络
  15. 多线程应用_左圆右方
  16. 『Python』Excel文件的读取以及DataFrame的相关操作 (2)
  17. 从源码解析-Android系统启动流程概述 init进程zygote进程SystemServer进程启动流程
  18. compiz的ubuntu10.04安装
  19. 小武告诉滨滨每天可以吃一块或者两块巧克力。假设滨滨每天都吃巧克力,问滨滨共有多少种不同的吃完巧克力的方案。
  20. 关于ITIL、ITIL认证、ITIL的价值

热门文章

  1. JavaScript charCodeAt() 方法
  2. 华为p8升级android8系统资源,这些华为手机都可升Android8.0,告诉你必须升EMUI8.0的3个理由...
  3. ADU87、DCB20X-E等设备以RTSP方式添加第三方相机或录像机教程
  4. 认知智能+数字伙伴双轮驱动,爱数以数据认知激发组织创新活力
  5. bebian10主机名,FQDN修改
  6. c语言课程宣传册,EFI 2015 C,提升企业宣传画册设计
  7. 微信视频用html5不能用,仿照laya官方demo做了一个视频播放的UI,为啥在微信里不能用?...
  8. Pareto-Efficient Hybridization for Multi-Objective Recommender Systems
  9. 2203-C语言基础知识
  10. 『杭电1411』校庆神秘建筑