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

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的