【洛谷题单】——【入门2】分支结构(全)

2024-01-20 00:12
文章标签 入门 结构 分支 洛谷题

本文主要是介绍【洛谷题单】——【入门2】分支结构(全),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

P2433【深基1-2】小学数学 N 合一

问题一

直接输出即可

问题二

数学问题,注意输出格式:中间使用空格分开

问题三

数学问题,注意输出格式:每个数字一行

问题四

注意点是保留6位有效数字而不是保留6为小数,本题只需要保留3位小数

问题五

数学问题
在这里插入图片描述

问题六

sqrt()函数是用来开根号的,使用前需要加头文件:#include< cmath >
在这里插入图片描述

问题七

数学问题,注意输出格式即可

问题八

本题易错点在于类型转换,求球的体积时不能直接4/3,会导致精度有问题,应该用4.0/3,将4转化为浮点数

问题九

数学问题

问题十

在这里插入图片描述

问题十一

追击问题,直接用路程差/速度差

问题十二

方法一:直接数
方法二:利用ASCII表求,注意类型转换
在这里插入图片描述

问题十三

在这里插入图片描述

问题十四

在这里插入图片描述

参考代码

#include<bits/stdc++.h>
#define int long long
#define PI 3.141593
using namespace std;
signed main()
{int t;cin>>t;if(t==1){cout << "I love Luogu!";}else if(t==2){cout<<"6 4";}else if(t==3){cout<<"3\n12\n2\n";}else if(t==4){double a=500;int b=3;double ans=a/b;printf("%.3lf",ans);}else if(t==5){int s1=260,s2=220,v1=12,v2=20;int ans=(s1+s2)/(v1+v2);cout<<ans;}else if(t==6){cout<<sqrt(6*6+9*9);}else if(t==7){int a=100;cout<<a+10<<endl<<a+10-20<<endl<<"0\n";}else if(t==8){cout<<PI*10<<endl<<PI*25<<endl<<4.0/3*PI*125<<endl;}else if(t==9){cout<<"22";}else if(t==10){cout<<"9";}else if(t==11){cout<<(double)100/3;}else if(t==12){cout<<(int)('M'-'A')+1<<"\n"<<(char)(18+'A'-1);}else if(t==13){cout<<(int)(pow(4.0/3*PI*(4*4*4+10*10*10),1.0*1/3));}else if(t==14){cout<<"50";}return 0;
}

P5709 【深基2.习6】Apples Prologue / 苹果和虫子

分析

本题有两个坑

  • t可以等于0,当t等于0时如何计算?
  • 题目问的是还剩多少完整的苹果,也就是说吃了但没吃完的不算(思考这个该怎么算!很重要)
  1. 当t=0时可以直接看成能一瞬间吃完所有苹果,可以单独特判一下,直接输出0
  2. 我们先想一下什么情况下会出现没吃完的苹果:s不能整除t,换句话说就是判断s%t是否等于0,如果能整除就不用+1,否则就需要+1(代码形式:s%t == 0?0:1

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int m,t,s;cin>>m>>t>>s;int sum;//记录t分钟一共吃了多少苹果if(t==0){sum=m;}else{sum=s/t+(s%t==0?0:1);}if(sum>m) cout<<"0\n";else cout<<m-sum<<"\n";return 0;
}

P5710 【深基3.例2】数的性质

分析

分别讨论四个人什么时候满足条件即可,第三个人从正面讨论比较麻烦可以先从反面讨论

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int x;cin>>x;int a,b,c,d;if(x%2==0&&x>4&&x<=12) a=1;else a=0;if(x%2==0||x>4&&x<=12) b=1;else b=0;if(x%2==0&&x>4&&x<=12||x%2==1&&x<=4||x>12) c=0;else c=1;if(x%2==1&&x<=4||x>12) d=1;else d=0;cout<<a<<" "<<b<<" "<<c<<" "<<d;return 0;
}

P5711 【深基3.例3】闰年判断

分析

判断闰年的条件

  • 是4的倍数但不是100的倍数
  • 是400的倍数

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int year;cin>>year;if(year%4==0&&year%100!=0||year%400==0) cout<<"1";else cout<<"0";return 0;
}

P5712 【深基3.例4】Apples

分析

分情况讨论直接输出,注意一下格式就行

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int x;cin>>x;if(x<=1){cout<<"Today, I ate "<<x<<" apple.";}else{cout<<"Today, I ate "<<x<<" apples.";}return 0;
}

P5713 【深基3.例5】洛谷团队系统

分析

单独算出两种情况下的时间,然后做比较

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int n;cin>>n;int ans1,ans2;//分别计算两种情况下的时间,然后比较ans1=n*5;ans2=11+n*3;if(ans1<ans2) cout<<"Local";else cout<<"Luogu";return 0;
}

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

分析

易错点,如果直接double ans=m/h*h;结果会出问题,正确的应该是:double ans=m/(h * h);

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{double m,h;cin>>m>>h;double ans=m/(h*h);if(ans<18.5) cout<<"Underweight";else if(ans>=18.5&&ans<24) cout<<"Normal";else{cout<<ans<<endl;cout<<"Overweight";}return 0;
}

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

分析

  • c++直接使用sort函数排序
  • c语言可以使用qsort函数排序

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int s[3];cin>>s[0]>>s[1]>>s[2];sort(s,s+3);for(int i=0;i<3;i++){cout<<s[i]<<" ";}return 0;
}

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

分析

单独考虑一下闰年和非闰年
然后一般情况下月份的天数都是固定的,可以直接用数组存储,方便直接输出

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int s[14]={0,31,28,31,30,31,30,31,31,30,31,30,31};//存储月份的天数signed main()
{int y,m;cin>>y>>m;//闰年if(y%4==0&&y%100!=0||y%400==0){if(m==2) cout<<"29";else cout<<s[m];}else cout<<s[m];return 0;
}

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

分析

用maxx记录最不高兴的程度,如果当天不高兴的程度大于之前的,更新maxx,同时记录一下星期几d

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int a,b;int maxx=0,d=0;//maxx记录不高兴的程度,d记录最不高兴的日期for(int i=1;i<=7;i++){cin>>a>>b;int sum=a+b;if(sum>8&&sum>maxx){maxx=sum;d=i;}}cout<<d<<"\n";return 0;
}

P1909 [NOIP2016 普及组] 买铅笔

分析

和第二题大同小异,思想差不多,就是看能不能整除,不能的话就需要多买一个,分三种情况讨论,把每次买的价格和ans(存储最低的价格)比较,如果小于ans就更新ans,否则不变

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int n;cin>>n;int nums,val;int ans=1e9;for(int i=0;i<3;i++){cin>>nums>>val;int tmp=(n/nums+(n%nums==0?0:1))*val;ans=min(ans,tmp);}cout<<ans;return 0;
}

P5717 【深基3.习8】三角形分类

思路

将三条边排个序,然后根据边的关系判断是哪种三角形,注意一下什么时候用单分支判断什么时候用多分支判断就行

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int d[4];cin>>d[1]>>d[2]>>d[3];sort(d + 1, d + 4);if(d[1] + d[2] <= d[3]){cout<<"Not triangle\n";return 0;}if(d[1] * d[1] + d[2] * d[2] == d[3] * d[3])	cout<<"Right triangle\n";else if(d[1] * d[1] + d[2] * d[2] > d[3] * d[3])	cout<<"Acute triangle\n";else if(d[1] * d[1] + d[2] * d[2] < d[3] * d[3])	cout<<"Obtuse triangle\n";if(d[1] == d[2] || d[2] == d[3] || d[3] == d[1])	cout<<"Isosceles triangle\n";if(d[1] == d[2] && d[2] == d[3])	cout<<"Equilateral triangle\n";return 0;
}

P1422 小玉家的电费

分析

分情况讨论即可

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int n;cin>>n;double ans=0;if(n<=150){ans=n*0.4463;printf("%.1lf",ans);}else if(n>150&&n<=400){ans=150*0.4463+(n-150)*0.4663;printf("%.1lf",ans);}else{ans=150*0.4463+(400-150)*0.4663+(n-400)*0.5663;printf("%.1lf",ans);}return 0;
}

P1424 小鱼的航程(改进版)

分析

注意点:需要开long long,因为n的数据量很大,用int会炸
思路就是暴力循环,模拟遍历一遍就可以了

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int x,n;cin>>x>>n;int ans=0;for(int i=0;i<n;i++){if(x==7){x=1;//从星期一再开始循环}else if(x>=1&&x<=5){ans+=250;x++;}else{x++;}}cout<<ans;return 0;
}

P1888 三角函数

分析

最小锐角的正弦值是用最短的边/最长的边,因此先将三个边排个序,然后就是约分,约分前需要求一下最大公约数,两个数除一下就化成最简的了

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;signed main()
{int s[3];cin>>s[0]>>s[1]>>s[2];sort(s,s+3);int a=s[0],b=s[2];int c=__gcd(a,b);//求最大公约数a/=c,b/=c;cout<<a<<"/"<<b;return 0;
}

P1046 [NOIP2005 普及组] 陶陶摘苹果

分析

直接求出能够摘到的最大高度,小于等于这个高度的都能摘到

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int s[11];for(int i=0;i<10;i++){cin>>s[i];}int h;cin>>h;h+=30;int ans=0;for(int i=0;i<10;i++){if(s[i]<=h)ans++;}cout<<ans;return 0;
}

P4414 [COCI2006-2007#2] ABC

分析

思路:s数组用来存储三个数,并排序,下标从0 ~ 2也分别对应着A ~ C,
v是一个字符串,用来存储输出的顺序,利用ASCII表的关系,将字符转化为对应的下标
在这里插入图片描述

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int s[3];cin>>s[0]>>s[1]>>s[2];sort(s,s+3);string v;cin>>v;int a,b,c;for(int i=0;i<3;i++){cout<<s[(int)(v[i]-'A')]<<" ";}return 0;
}

P1055 [NOIP2008 普及组] ISBN 号码

分析

考察字符型和整形之间的转换
不能直接用字符型中的数字和整形进行比较,需要将字符型转化为整形

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{string s;cin>>s;int ans=0;int flag=1;for(int i=0;i<11;i++){if(i==1||i==5) continue;ans+=(s[i]-'0')*flag;flag++;}ans%=11;if(ans>=0&&ans<=9){if(ans==s[12]-'0') cout<<"Right";else {for(int i=0;i<12;i++){cout<<s[i];}cout<<ans;}}else{if(s[12]=='X') cout<<"Right";else{for(int i=0;i<12;i++){cout<<s[i];}cout<<"X";}}return 0;
}

这篇关于【洛谷题单】——【入门2】分支结构(全)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/624190

相关文章

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

史上最全MybatisPlus从入门到精通

《史上最全MybatisPlus从入门到精通》MyBatis-Plus是MyBatis增强工具,简化开发并提升效率,支持自动映射表名/字段与实体类,提供条件构造器、多种查询方式(等值/范围/模糊/分页... 目录1.简介2.基础篇2.1.通用mapper接口操作2.2.通用service接口操作3.进阶篇3

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二