【day6】【洛谷算法题】-P2029大象喝水-刷题反思集[入门1顺序结构]

发布于:2022-11-30 ⋅ 阅读:(936) ⋅ 点赞:(0)

大家好,我是花无缺,一个风一样的男子,热爱各种开发技术,感谢各位大佬的阅读 !
CSDN博客地址:https://blog.csdn.net/huawuque404
欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
本文由 huawuque404 原创
每一个不曾起舞的日子都是对生命的辜负

CSDN话题挑战赛第2期
参赛话题:算法题解



大象喝水

题目描述

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

输入格式

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

输出格式

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

样例

样例输入

23 11

样例输出

3

提示

数据规模与约定

对于全部的测试点,保证 1 ≤ h ≤ 500 1 \leq h \leq 500 1h500 1 ≤ r ≤ 100 1 \leq r \leq 100 1r100

我的题解

//C语言
#include <stdio.h>

int main()
{

    int sum = 0.0, total = 0, height, radius;
    scanf("%d%d", &height, &radius);
    while (sum < 20000)
    {
        sum = sum + (3.14 * radius * radius * height);
        ++total;
    }

    printf("%d", total);

    return 0;
}

结果

Accepted

优解1

//C++
#include <bits/stdc++.h>
using namespace std;

const double Pi=3.14159;

int main() {
    int r,h,v,ans;
    cin>>h>>r;
    v=Pi*r*r*h;
    if(20000%(int)v!=0)
        ans=20000/(int)v+1;
    else
        ans=20000/(int)v;
    cout<<ans;
    return 0;
} 

优解2

//C++
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>
#include <cstdlib>
using namespace std;

int h, r, a;
int main()
{
    cin >> h >> r;
    a = 20000 / (3.14159 * r * r * h) + 1;
    cout << a;
    return 0;
}

反思总结

单位转换:

1 dm 3 = 1000 cm3 = 1000ml = 1 L

由题意知道大象要喝20000 cm3 的水才能解渴,所以用20000除以每桶能够盛放的水就可以得到一共需要多少桶水了,但是需要注意,要保证大象至少要喝2000 cm3 的水,所以用除法来做的话,当结果不是整数的时候,就要让桶数多一桶,因为桶数是整数,根据C语言整数输出会去掉小数位的特点,要加上一桶才能确保有2000 cm3 的水。

而我的做法是采用while循环,一桶一桶的累加,当累加的和大于 20000 cm3 时,就输出桶数,这样可以不用考虑实数精度的问题。

知识点

在C语言中,以整数形式输出实数时,实数的小数部分会被舍弃,只输出整数部分,即向下取整

以浮点数形式输出实数时,会根据要保留的小数位数四舍五入

不能以实数形式输出整数

例如:

//C语言
#include <stdio.h>

int main()
{
    printf("%f\n", 10);
    printf("%lf\n", 10);
    return 0;
}

运行结果

0.000000
0.000000

我查阅资料后发现原因是C语言底层浮点数和整数的存储原理不同。我也还在学习当中,理解得不透彻。如果有知道的小伙伴欢迎在评论区给大伙讲讲哦。


🌸欢迎关注我的博客:来和我一起成长吧! 现在关注我,以后就是老粉了(手动狗头)
🍻一起进步-刷题专栏:算法题集
📢往期回顾:
你们的点赞👍 收藏⭐ 留言📝 关注✅
是我持续创作,输出优质内容的最大动力!
谢谢!

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到