牛客竞赛语法入门班顺序结构习题(重现赛)(1041-1047)

本篇包含:

1、1041-纸牌

2、1042-Tobaku Mokushiroku Kaiji

3、1043-珂朵莉的假动态仙人掌

4、1044-旅游观光

5、1045-[NOIP2002]自由落体

6、1046-挂科

7、1047-得不到的爱情

本篇包含考点:

1、找规律

2、石头剪刀布规则

3、运动学物理知识应用

4、简单的集合包含关系


 1041-纸牌

参考代码:

#include<bits/stdc++.h>
#include <cmath>
using namespace std;
int main(){
	int n;
	cin>>n;
	if(n%2==0) cout<<n/2;
	else cout<<n/2+1;
}

 解析:

本题是找规律

读者可以写几个样例出来,再分奇偶,就会发现,偶数的和为n/2,奇数的和为n/2+1


 1042-Tobaku Mokushiroku Kaiji

 参考代码:

#include<bits/stdc++.h>
#include <cmath>
using namespace std;
int main(){
	int a,b,c,d,e,f;
	cin>>a>>b>>c>>d>>e>>f;
	int sum=0;
	sum+=min(a,e);
	sum+=min(b,f);
	sum+=min(c,d);
	cout<<sum<<endl;
}

 解析:

石头剪刀布的基本规则

再根据规则判断获胜的方法中,是自己先用完还是对方先用完,就是取min,再将所有的相加便可得到答案


 1043-珂朵莉的假动态仙人掌

  参考代码:

#include<bits/stdc++.h>
#include <cmath>
using namespace std;
int main(){
	int n;
	cin>>n;
	int x=(n/3)*2;
	if(n%3!=0) x++;
	cout<<x<<endl;
}

 解析:

本题是小思维题

为使送的天数最多且相邻的两天个数不能相同,很容易想到的是 1,2,1,2...排列

这是总和为三的规律的循环,如果有本子多出来,则说明多了1本或者2本,我们将其排到头或者尾即可,即x++


 1044-旅游观光

   参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	if(n%2==0) cout<<n/2-1;
	else cout<<n/2;
}

 解析:

本题也是找规律题,从题目给出的例子看出

头尾相接,来回循环,所以我们也按照这个规律取做

得到的代价结果是分奇偶,偶数为 n/2-1,奇数为n/2


 1045-[NOIP2002]自由落体

  参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	double H,S1,V,L,K,n;
	cin>>H>>S1>>V>>L>>K>>n;
	//球球下落
	double t1=sqrt((2.0*(H-K))/10.0);
	double t2=sqrt((2.0*H)/10.0);
	
	double s1=S1+L-V*t1+0.0001;
	double s2=S1-V*t2-0.0001;
	
	int ans=0;
	for(int i=0;i<n;i++){
		if(i>=s2&&i<=s1) ans++;
	} 
	cout<<ans<<endl;
}

 解析:

这一题对于没学过运动学物理知识的读者来说,确实是较为困难

对于快把物理知识忘光,以及想起被高中物理知识支配的恐惧感

首先,这里要说明,<=0.00001表示的是小车的左右而不是上下

然后这道题的思路是:先计算小球下落的时间,t1为下降到小车上方,t2为下降到小车下方

通过t1和t2,计算出s1:小车右方通过t1时间经过的路程,计算出s2:小车左方通过t2时间经过的路程。

最后,因为小球的间距都为1,所以使用for循环,找出在 s2和s1时距离内的小球有多少个


 1046-挂科

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,x,y;
	cin>>n>>x>>y;
	int ma=min(x,y);
	int mi;
	if(x+y<=n) mi=0;
	else mi=x+y-n;
	
	cout<<ma<<' '<<mi;
}

  解析:

这里涉及到简单的集合关系

题目中说到,有两个集合,分别是挂高数和挂大物的人数

还有一个全集是全班的人数

那么,最大可能的人数就是:挂高数和挂大物的人尽可能重合,对两个集合取min

最小可能的人数就是:挂高数和挂大物的人尽可能不重合,对全集来说,如果两个集合相加都比全集小,那么就不会重合;如果比全集大,则二者相加再减去全集,即为最小的重合人数


 1047-得不到的爱情

 参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long n,m;
	cin>>n>>m;
	cout<<n*m-n-m;
}

 解析:

塞瓦维斯特定理:

已知a,b为大于1的正整数,gcd(a,b)=1(a,b互为素数),则使不定方程ax+by=C不存在非负整数解的最大整数C=a×b−a−b


如果大家有不懂的,或者文章有何不正,都欢迎评论留言进行讨论或者私信作者   

相关推荐

  1. 26

    2024-03-26 16:38:03       55 阅读
  2. 39

    2024-03-26 16:38:03       34 阅读
  3. 45

    2024-03-26 16:38:03       28 阅读
  4. 51

    2024-03-26 16:38:03       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 16:38:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 16:38:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 16:38:03       82 阅读
  4. Python语言-面向对象

    2024-03-26 16:38:03       91 阅读

热门阅读

  1. C/C++中的Static关键字

    2024-03-26 16:38:03       38 阅读
  2. HashMap

    HashMap

    2024-03-26 16:38:03      36 阅读
  3. C#.NET 与 Python 交互

    2024-03-26 16:38:03       42 阅读
  4. HTTP 状态码及分类

    2024-03-26 16:38:03       40 阅读
  5. 3.25C++

    3.25C++

    2024-03-26 16:38:03      39 阅读
  6. 蓝桥杯day13刷题日记

    2024-03-26 16:38:03       35 阅读
  7. python OpenCV的使用

    2024-03-26 16:38:03       38 阅读
  8. xv6项目开源—04

    2024-03-26 16:38:03       37 阅读