本篇包含:
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
如果大家有不懂的,或者文章有何不正,都欢迎评论留言进行讨论或者私信作者