【洛谷题单】——【入门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

相关文章

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务