UCT-2021年ACM竞赛班训练(六)2021.4.29-问题 B: 五一假期前的最后一道题

84 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

@TOC


五一假期前的最后一道题

传送门

时间限制:1秒 空间限制:128M


题目描述

后天就是五一假期了,小L约好了女生一起出去玩。他还剩下最后一道数论作业,写完就可以去嗨了。

题目是,求1+11+11+11+1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}}的值。

怀揣着与女神约会的激动心情,小L飞快地算了起来。一天、两天、\cdots眼看五一假期就要来了,这个计算何时才到尽头!

于是他找到了会编程的你,想让你编个程序,在五一放假之前得到答案。


输入描述

给你一个正整数nn,请你计算出n+1n+1n+1n+n+\frac{1}{n+\frac{1}{n+\frac{1}{n+\cdots}}}的值。

如:样例一

1

即求1+11+11+11+1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}}的值。

数据范围: 1n1081\leq n \leq 10^8


输出描述

为了避免根号不易打出的尴尬,老师决定允许小L用3个整数来表示答案。 如:样例一 经过计算机夜以继日的运算 ,得到1+11+11+11+=1+521+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}}=\frac{1+\sqrt5}{2}。 我们用三个数字abca、b、c来代表答案a+bc\frac{a+\sqrt b}{c}

1 5 2

题目分析

一个可以无限递推下去的式子,一定具有某种神秘的规律。 小学三年级的数学老师教过我们,求谁设谁。

所以我们设1+11+11+11+=x1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}}=x

现在1+1一大块=x1+\frac{1}{一大块}=x。那么这一大块等于什么呢?这一大块等于1+11+11+11+1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}},还是xx。 因此我们有1+1x=x1+\frac{1}{x}=x。 解得x=1+52x=\frac{1+\sqrt{5}}{2}x=152x=\frac{1-\sqrt{5}}{2}<0<0,舍去)

11变成nn

n+1x=xn+\frac{1}{x} = xx=n+(n2+4)2x=\frac{n+\sqrt{(n^2+4)}}{2}x=n(n2+4)2x=\frac{n-\sqrt{(n^2+4)}}{2}<0<0,舍去)


注意事项

  • Δ=n2+4>0\Delta=n^2+4>0,一定有解
  • n(n2+4)<0n-\sqrt{(n^2+4)}<0,一定有一解舍去
  • 分母为22,可能需要约分
  • nn的范围是10810^8n2n^2可能超出32位intint,某些编程语言注意用long longlong\ long

AC代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
/*小水题一道*/
int main()
{
    ll n;
    cin >> n;
    ll a = n, b = n * n + 4, c = 2;
    if (a % 2 == 0 && b % 4 == 0)
        a /= 2, b /= 4, c /= 2;
    printf("%lld %lld %lld\n", a, b, c);
    return 0;
}

同步发文于我的CSDN,原创不易,转载请附上原文链接哦~
Tisfy:letmefly.blog.csdn.net/article/det…