• AtCoder ABC001C 風力観測题解及翻译(四舍五入)


    AT_abc001C 風力観測

    一、题目描述

    原题链接
    给两个输入,一个是风向,一个是风力,要求以另一种表示形式输出它们。

    二、算法分析

    总体是一道模拟题,考察了浮点数的四舍五入。
    以 5.23 为例,对小数点后第 2 位进行四舍五入,即保留小数点后 1 位。

    1. 将小数点后第 2 位加 5.
    2. 得 5.28
    3. 将小数点移到第 2 位之前的一位。
    4. 得 52.8
    5. 取整。(此处注意加上误差,四舍五入的误差限不超过最后一位的半个单位)
    6. 得 52
    7. 转换为小数。
    8. 得 52.0
    9. 小数点移回去。
    10. 得 5.2

    三、代码及注释

    #include
    #include
    #include
    #include
    #include
    using namespace std;
    int a;
    double b;
    double ad(double x,int p){                //对x的小数点后p位进行四舍五入(即保留小数点后p-1位)
        double eps=0.5*pow(10,p*(-1));        //四舍五入的误差限不超过最后一位的半个单位
        x+=5.0/pow(10,p);                     //先在小数点后第p位加上5
        double w=(int)(x*pow(10,p-1)+eps);    //然后把小数点移到第p位前一位
        double res=w;
        res=res/pow(10,p-1);
        return res;
    }
    int main(){
        
        cin>>a>>b;
        //计算风向,此时直接用题目给出的整数即可
        string s;
        if(a<=112) s="N";
        else if(a<=337) s="NNE";
        else if(a<=562) s="NE";
        else if(a<=787) s="ENE";
        else if(a<=1012) s="E";
        else if(a<=1237) s="ESE";
        else if(a<=1462) s="SE";
        else if(a<=1687) s="SSE";
        else if(a<=1912) s="S";
        else if(a<=2137) s="SSW";
        else if(a<=2362) s="SW";
        else if(a<=2587) s="WSW";
        else if(a<=2812) s="W";
        else if(a<=3037) s="WNW";
        else if(a<=3262) s="NW";
        else if(a<=3487) s="NNW";     
        else s="N";
        
        //计算风力
        double c=ad((b/60),2);         //题目输入的是每分钟的风程,要转化为每秒的,然后四舍五入
        int d=0;                       //风力等级
        if(c<=0.2) d=0,s="C";
        else if(c<=1.5) d=1;
        else if(c<=3.3) d=2;
        else if(c<=5.4) d=3;
        else if(c<=7.9) d=4;
        else if(c<=10.7) d=5;
        else if(c<=13.8) d=6;
        else if(c<=17.1) d=7;
        else if(c<=20.7) d=8;
        else if(c<=24.4) d=9;
        else if(c<=28.4) d=10;
        else if(c<=32.6) d=11;
        else d=12;
        
        cout<<s<<" "<<d<<endl;
        
        
        
        return 0; 
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
  • 相关阅读:
    Ubuntu20.4部署Cuda12.4
    Matlab进阶绘图第60期—带伪彩图的曲面图
    vue的生命周期的相关问题
    【附源码】计算机毕业设计SSM甜心驿站饮品信息管理
    ps2021神经ai滤镜无法使用,ps2021神经滤镜出现错误
    《中国垒球》:四强巡礼·再创辉煌
    Python字典的增删改查以及嵌套
    华为OD机试 - 一种字符串压缩表示的解压 - 考生抽中题(Java 2023 B卷 100分)
    易基因-原核转录组“rRNA捕获探针及其应用“方法获发明专利授权
    Apollo配置更新通知
  • 原文地址:https://blog.csdn.net/numb_ac/article/details/132869938