五一假期前的最后一道题
时间限制:1秒
空间限制:128M
题目描述
后天就是五一假期了,小L约好了女生一起出去玩。他还剩下最后一道数论作业,写完就可以去嗨了。
题目是,求 1 + 1 1 + 1 1 + 1 1 + ⋯ 1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}} 1+1+1+1+⋯111的值。
怀揣着与女神约会的激动心情,小L飞快地算了起来。一天、两天、 ⋯ \cdots ⋯眼看五一假期就要来了,这个计算何时才到尽头!
于是他找到了会编程的你,想让你编个程序,在五一放假之前得到答案。
输入描述
给你一个正整数 n n n,请你计算出 n + 1 n + 1 n + 1 n + ⋯ n+\frac{1}{n+\frac{1}{n+\frac{1}{n+\cdots}}} n+n+n+n+⋯111的值。
如:样例一
1
即求 1 + 1 1 + 1 1 + 1 1 + ⋯ 1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}} 1+1+1+1+⋯111的值。
数据范围:
1
≤
n
≤
1
0
8
1\leq n \leq 10^8
1≤n≤108
输出描述
为了避免根号不易打出的尴尬,老师决定允许小L用3个整数来表示答案。
如:样例一
经过计算机夜以继日的运算 ,得到
1
+
1
1
+
1
1
+
1
1
+
⋯
=
1
+
5
2
1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}}=\frac{1+\sqrt5}{2}
1+1+1+1+⋯111=21+5。
我们用三个数字
a
、
b
、
c
a、b、c
a、b、c来代表答案
a
+
b
c
\frac{a+\sqrt b}{c}
ca+b
1 5 2
题目分析
一个可以无限递推下去的式子,一定具有某种神秘的规律。
小学三年级的数学老师教过我们,求谁设谁。所以我们设 1 + 1 1 + 1 1 + 1 1 + ⋯ = x 1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}}=x 1+1+1+1+⋯111=x。
现在 1 + 1 一 大 块 = x 1+\frac{1}{一大块}=x 1+一大块1=x。那么这一大块等于什么呢?这一大块等于 1 + 1 1 + 1 1 + 1 1 + ⋯ 1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\cdots}}} 1+1+1+1+⋯111,还是 x x x。
因此我们有 1 + 1 x = x 1+\frac{1}{x}=x 1+x1=x。
解得 x = 1 + 5 2 x=\frac{1+\sqrt{5}}{2} x=21+5或 x = 1 − 5 2 x=\frac{1-\sqrt{5}}{2} x=21−5( < 0 <0 <0,舍去)
当 1 1 1变成 n n n时
解 n + 1 x = x n+\frac{1}{x} = x n+x1=x得 x = n + ( n 2 + 4 ) 2 x=\frac{n+\sqrt{(n^2+4)}}{2} x=2n+(n2+4)或 x = n − ( n 2 + 4 ) 2 x=\frac{n-\sqrt{(n^2+4)}}{2} x=2n−(n2+4)( < 0 <0 <0,舍去)
注意事项
- Δ = n 2 + 4 > 0 \Delta=n^2+4>0 Δ=n2+4>0,一定有解
- n − ( n 2 + 4 ) < 0 n-\sqrt{(n^2+4)}<0 n−(n2+4)<0,一定有一解舍去
- 分母为 2 2 2,可能需要约分
- n n n的范围是 1 0 8 10^8 108, n 2 n^2 n2可能超出32位 i n t int int,某些编程语言注意用 l o n g l o n g long\ long long 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;
}
原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/116211565