本文主要是介绍【洛谷题单】——【入门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时如何计算?
- 题目问的是还剩多少完整的苹果,也就是说吃了但没吃完的不算(思考这个该怎么算!很重要)
- 当t=0时可以直接看成能一瞬间吃完所有苹果,可以单独特判一下,直接输出0
- 我们先想一下什么情况下会出现没吃完的苹果: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】分支结构(全)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!