【洛谷题单】——【入门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 Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非