一本通1032、2032、2048

41946b5cad09ec441d4af91093c6c01b.jpeg


 1032:大象喝水

这道题的原题不知道为何,叫大象喝水查。

【题目描述】

一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少要喝多少桶水才会解渴。

【输入】

输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深h和底面半径r,单位都是厘米。

【输出】

输出一行,包含一个整数,表示大象至少要喝水的桶数。

【输入样例】

23 11

【输出样例】

3

分析

1、要想做出这道题,我们就需要求出这个桶的体积。这个桶是一个圆柱体,体积为:gif.latex?%5Cpi%20r%5E%7B2%7Dh

2、gif.latex?hgif.latex?r的单位为gif.latex?cm,而题干中是gif.latex?20升。

3、在用gif.latex?20000毫升(gif.latex?20升)除以桶的体积时需向上取整。

AC代码

#include<iostream>
#include<math.h>//数学库
using namespace std;
int main(){
	int h,r;cin>>h>>r;
	float v=r*r*3.14*h;
	cout<<ceil(20000/v)<<endl;//计算出桶数并向上取整输出
	return 0;
}

1d97a416f4c44d50868ccc930a28f0b4.png

 

拓展——math.h数学库

<cmath> (math.h)

math.h(即cmath)声明了一些常用的数学函数。比如:

  • pow()幂函数。提供两个参数,分别为底数与指数,返回值为浮点型。
  • sqrt()开方(仅限平方)。提供一个数gif.latex?x,返回gif.latex?%5Csqrt%7Bn%7D,类型为浮点型。
  • abs()与fabs()绝对值函数。注意:这里指cmath中的绝对值函数!两者几乎没有区别,提供一个浮点数,返回它的绝对值,也是浮点数。
  • ceil():向上取整。
  • floor():向下取整。
  • round():四舍五入。

2032:【例4.18】分解质因数

【题目描述】

把一个合数分解成若干个质因数乘积的形式(即求质因数的过程)叫做分解质因数。分解质因数(也称分解素因数)只针对合数。

输入一个正整数n,将n分解成质因数乘积的形式。

【输入】

一个正整数n。

【输出】

分解成质因数乘积的形式。质因数必须由小到大,见样例。

【输入样例】

36

【输出样例】

36=2*2*3*3

【提示】

【数据范围】

对于所有数据,gif.latex?2%5Cleq%20n%5Cleq%2020000

 分析

有人拿到这道题觉得可能会分出合数,要做一个质数的数组,但其实不用!因为任何合数都是由质数组成的,你只需要像短除法一样去除就是了。比如60(我字有点丑):94df558b14204a85b1d4df693f473a55.png

 AC代码

#include<iostream>
using namespace std;
int main(){
	int n,m; cin>>n;
	m=n;
	bool b=1;
	cout<<n<<"=";
	for(int i=2;m!=1;i++){
		while(m%i==0){//除到除不尽
			if(!b)cout<<"*";//在第一个数前面没有乘号
			else b=0;
			cout<<i;
			m/=i;
		}
	}
	cout<<endl;
	return 0;
}

fd2133f9dd374aa19f460e08282fc781.png


2048:【例5.18】串排序

【题目描述】

对给定的n(1≤n≤20)n(1≤n≤20)个国家名(国家名字长度不超过20),按其字母的顺序输出。

【输入】

第一行为国家的个数n;

以下n行为国家的名字。

【输出】

nn行,排序后的国名。

【输入样例】

3
Korea
China
Japan

【输出样例】

China
Japan
Korea

分析

这道题呢有的人觉得要排序,还要写个特别长的排序规则,实际上并没有那么麻烦,其实可以直接用algorithm(算法头文件)的sort()排序函数就是了。

AC代码

#include<iostream>
#include<string>
#include<algorithm>//算法头文件
using namespace std;
int main(){
	int n; cin>>n;
	string s[20];
	for(int i=0;i<n;i++)cin>>s[i];
	sort(s,s+n);//排序
	for(int i=0;i<n;i++)cout<<s[i]<<endl;
	return 0;
}

058ccaf12b594e7888f4537efec5b50d.png

思考

如果不用字符串,用字符数组应该怎么做呢?


好了,练了几道题,今天就到这里了。拜拜!😆😆😆

 

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H.Y_C ⁹⁹⁹⁹⁹⁹⁺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值