517编程 267 - #简单计算题-公式计算

517编程 267 - 简单计算题-公式计算



  • 题面

给定 nn,求公式


  • 输入
    一个整数 n (1 ≤ n ≤ 48)

  • 输出
    输出答案,保留两位小数。

  • 样例
Input Output
6 8.00

思路

  • 本题有两种解法,低精度和高精度。sqrt(5)用浮点变量类型保存。

代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a;
    scanf("%d", &a);
    double k = sqrt(5), s = (k + 1) / 2, r = (1 - k) / 2, ss = 1, rr = 1;
    for (int i = 0; i < a; i++) {
        ss *= s;
        rr *= r;
    }
    printf("%.2lf", (ss - rr) / k);
    // system("pause");
    return 0;
}

低精度暴力AC。

#include <bits/stdc++.h>
using namespace std; 
char sum[1200]; 
int s = 0, m = 0, n;   
int main()
{
    cin >> n;   
    string s1, s2;   
    int a[1200], b[1200];   
    int he, i;   
    s1 = "0";   
    s2 = "1";   
    for(m = 2; m < n + 1; m++)
    {
        memset(a, 0, sizeof a);   
        memset(b, 0, sizeof b);   
        a[0] = s1.length();   
        for(i = 1; i <= a[0]; i++)
        {
            a[i] = s1[a[0] - i] - '0'; 
        }
        b[0] = s2.length(); 
        for(i = 1; i<= b[0]; i++)
        {
            b[i] = s2[b[0] - i] - '0'; 
        }
        he = (a[0] > b[0] ? a[0] : b[0]); 
        for(i = 1; i <= he; i++)
        {
            a[i]+= b[i]; 
            a[i + 1] += a[i] / 10; 
            a[i] %= 10; 
        }
        he++; 
        while((a[he] == 0) && (he > 1))
        he--; 
            for(i = he, s = 0; i >= 1; i--, s++)
            {
                sum[s] = a[i] + '0'; 
            }
        s1 = s2; 
        s2 = sum; 
    }
    cout << s2 << ".00" << endl;
    // system("pause");
    return 0; 
}

高精度AC。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读