zoukankan      html  css  js  c++  java
  • [蓝桥杯2019初赛]

    题意:中文题,自行理解。

    题目链接:http://oj.ecustacm.cn/problem.php?id=1478

    之后查了发现:
    相邻两个斐波那契数的比值是随着序号的增加逐渐趋于黄金分割比。即f(n)/f(n+1)-→0.618…。
    原来这是一个规律,我之前复习斐波那契怎么没复习到!!!

    PS:这题我没有思路,查了发现就是个裸的直接输出看结果题目,可是我做的时候是真的不知道从何入手。

    输出一部分看看:

    printf("%d %.8lf
    ",x++,f[i-1]*1.0/f[i]);
    // 有个小技巧,做题可以用:不用再去开一个for循环去输出f[i]/f[i+1],而是直接在第一个循环中对式子进行变形写成f[i-1]*1.0/f[i]即可,还需要注意x从几开始,可以和样例对照着看。
    
    2 0.50000000
    3 0.66666667
    4 0.60000000
    5 0.62500000
    6 0.61538462
    7 0.61904762
    8 0.61764706
    9 0.61818182
    10 0.61797753
    11 0.61805556
    12 0.61802575
    13 0.61803714
    14 0.61803279
    15 0.61803445
    16 0.61803381
    17 0.61803406
    18 0.61803396
    19 0.61803400
    20 0.61803399
    21 0.61803399
    22 0.61803399
    23 0.61803399
    24 0.61803399
    25 0.61803399
    26 0.61803399
    27 0.61803399
    28 0.61803399
    29 0.61803399
    30 0.61803399
    31 0.61803399
    32 0.61803399
    33 0.61803399
    34 0.61803399
    35 0.61803399
    36 0.61803399
    37 0.61803399
    38 0.61803399
    39 0.61803399
    40 0.61803399
    41 0.61803399
    42 0.61803399
    43 0.61803399
    44 0.61803399
    45 0.61803399
    46 0.61803399
    47 0.61803399
    48 0.61803399
    49 0.61803399
    

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    ll f[25];
    
    int main()
    {
        int n;
        cin>>n;
        f[1]=1,f[2]=1;
        int x=2;
        for(int i=3; i<=25; i++)
        {
            f[i]=f[i-1]+f[i-2];
            //printf("%d %.8lf
    ",x++,f[i-1]*1.0/f[i]);
        }
        if(n>=20)
            cout<<"0.61803399"<<endl;
        else
            printf("%.8lf
    ",f[n]*1.0/f[n+1]);
        return 0;
    }
    

    注意

    因为我只试了一组数据就是样例,导致代码一直不对,后来测一下数据发现是cout的问题,以前从来没有注意过这个问题,以为cout就是直接输出没有任何格式。
    于是,我今天找bug找了好久。
    这里说明一下,
    C++默认流的输出有效位是6位。
    所以我直接输出cout<<0.61803399<<endl这样子,是得不到正确答案的,只会输出0.618034。

    cout格式化输出小数点后位数

    #include <iomanip>  头文件
    std::cout<<std::fixed<<std::setprecision(8)<<1.23456789123456<< std::endl;  控制输出位数8位的格式,这个之前用过,不好记,还是printf控制。
    

    出错代码部分

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int main()
    {
        cout<<"0.61803399"<<endl; // 0.61803399
        cout<<0.61803399<<endl; // 0.618034
        return 0;
    }
    
  • 相关阅读:
    flask总结02
    flask总结01
    恩智浦Freescale Cortex-A9 迅为IMX6开发板平台初体验
    [分享] IMX6嵌入式开发板linux QT挂载U盘及TF卡
    迅为4412嵌入式安卓开发板兼容3G网络|4G网络
    迅为嵌入式4412平台兼容3G/4G模块的安卓开发板
    飞思卡尔开发板-迅为IMX6开兼容单核 双核 四核Plus开发板
    物联网初学者智能家居必备迅为iTOP-4412开发板
    【分享】4412开发板POP烧写ubuntu出错,如何挂载emmc分区解决方法
    [安卓开发板]迅为IMX6 四核Android开发板
  • 原文地址:https://www.cnblogs.com/OFSHK/p/13184384.html
Copyright © 2011-2022 走看看