• 【C++】【实用篇】H.Y_C的刷题日记(一本通1032、2032、2048)



     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代码

    1. #include
    2. #include//数学库
    3. using namespace std;
    4. int main(){
    5. int h,r;cin>>h>>r;
    6. float v=r*r*3.14*h;
    7. cout<<ceil(20000/v)<//计算出桶数并向上取整输出
    8. return 0;
    9. }

    拓展——math.h数学库

    (math.h)

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

    • pow()幂函数。提供两个参数,分别为底数与指数,返回值为浮点型。
    • sqrt()开方(仅限平方)。提供一个数x,返回\sqrt{n},类型为浮点型。
    • 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代码

    1. #include
    2. using namespace std;
    3. int main(){
    4. int n,m; cin>>n;
    5. m=n;
    6. bool b=1;
    7. cout<"=";
    8. for(int i=2;m!=1;i++){
    9. while(m%i==0){//除到除不尽
    10. if(!b)cout<<"*";//在第一个数前面没有乘号
    11. else b=0;
    12. cout<
    13. m/=i;
    14. }
    15. }
    16. cout<
    17. return 0;
    18. }


    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代码

    1. #include
    2. #include
    3. #include//算法头文件
    4. using namespace std;
    5. int main(){
    6. int n; cin>>n;
    7. string s[20];
    8. for(int i=0;i>s[i];
    9. sort(s,s+n);//排序
    10. for(int i=0;i
    11. return 0;
    12. }

    思考

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


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

  • 相关阅读:
    【技术干货】华为云FusionInsight MRS的自研超级调度器Superior Scheduler
    使用C#为进程创建DUMP文件
    解决Iterm2升级后遇到“Stashed changes“的问题
    关于数据可视化那些事
    Spark---数据输出
    家政预约小程序13我的订单
    RCNN系列网络的理解
    4+1视图与UML
    2021 XV6 5:Copy-on-Write Fork
    如何将canvas生成的图片转为文件
  • 原文地址:https://blog.csdn.net/qq_43546083/article/details/125787402