欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 模拟法练习C++ 2

模拟法练习C++ 2

2025/9/18 22:39:56 来源:https://blog.csdn.net/a_sdfghjk1234567/article/details/144636523  浏览:    关键词:模拟法练习C++ 2

1. 陶陶摘苹果

题目描述

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入

包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出

包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

样例输入 复制
100 200 150 140 129 134 167 198 200 111
110
样例输出 复制
5

思路:循环+判断

代码:

#include <iostream>
using namespace std;int a[10];
int m,s=0;void input()
{	for(int i=0;i<10;i++){cin >> a[i];}cin >> m;m=m+30;//顺便把他+30
}void panduan()
{	for(int j=0;j<10;j++){if(m>=a[j]){s++;}}
}int main(){input();panduan();cout << s << endl;return 0;
}

2. 校门外的树

 算法提高  校门外的树   
时间限制:1.0s     内存限制:256.0MB
     
问题描述
  某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
  由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合  的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入格式
    输入的第一行有两个整数L(1  < =  L  < =  10000)和  M(1  < =  M  < =  100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点  和终止点的坐标。
输出格式
  输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
样例输入
500  3
150  300
100  200
470  471
样例输出
298
数据规模和约定
  对于20%的数据,区域之间没有重合的部分;
  对于其它的数据,区域之间有重合的情况。
问题描述
  某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
  由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合  的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入格式
    输入文件的第一行有两个整数L(1  < =  L  < =  10000)和  M(1  < =  M  < =  100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点  和终止点的坐标。
输出格式
  输出文件包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
样例输入
500  3
150  300
100  200
470  471
样例输出
298
数据规模和约定
  对于20%的数据,区域之间没有重合的部分;
  对于其它的数据,区域之间有重合的情况。
试题来源
  noip2005普及组

思路:遍历

代码:

#include<bits/stdc++.h>
using namespace std;
int a[10000];
int main()
{	int n,m,x,y;cin>>n>>m;int i,j;memset(a,0,sizeof(a));for(i=0;i<m;i++){cin>>x>>y;for(j=x;j<=y;j++)a[j]=1;}	int ans=0;for(i=0;i<=n;i++)if(!a[i]) ans++;cout<<ans<<endl;return 0;
}

3.买铅笔(pencil)

题目描述

P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。
现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱。

输入

输入的第一行包含一个正整数n,表示需要的铅笔数量。
接下来三行,每行用两个正整数描述一种包装的铅笔: 其中第一个整数表示这种包装内铅笔的数量,第二个整数表示这种包装的价格。
保证所有的7个数都是不超过10000的正整数。

输出

输出一行一个整数,表示P老师最少需要花费的钱。

样例输入 复制
57
2 2
50 30
30 27
样例输出 复制
54

思路:无

代码:

#include <bits/stdc++.h>
using namespace std;
int main() {double n,a,as,b,bs,c,cs;cin>>n>>a>>as>>b>>bs>>c>>cs;a = ceil(n/a)*as;b = ceil(n/b)*bs;c = ceil(n/c)*cs;if(a>b) {a=b;}if(a>c) {a=c;}cout<<(int)a;return 0;
}

感谢您的观看!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词