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;
    }
    
  • 相关阅读:
    java.lang.IllegalArgumentException: Not an managed type
    时间 日期 转换
    纯JavaScript开发飞机大战项目
    【thinkPHP框架】Failed opening required 'header.php' include_path='.;c:php5pear 终级解决方案
    【精编重制版】JavaWeb 入门级项目实战 -- 文章发布系统 (第二节)
    【PHP快速入门】 第二节 php基本语法
    【精编重制版】JavaWeb 入门级项目实战 -- 文章发布系统 (第一节)
    个人博客恢复访问
    【H5 音乐播放实例】第一节 音乐详情页制作(1)
    【php增删改查实例】第二十六节
  • 原文地址:https://www.cnblogs.com/OFSHK/p/13184384.html
Copyright © 2011-2022 走看看