HBC214949数圈圈,前缀和,枚举牛牛的反函数题解

北笙凉宸 算法基础篇 45 0
想要检验自己的编程水平?来试试全网最全C++题库,让您在挑战中不断进步。
小宝定义了一个递归函数F(x),x为正整数且定义域范围x∈[1,1018]xin [1,10^{18}]x∈[1,1018] F(x)={1(x=1)F(x+1)+1(x≠1andx%2=1)F(x/2)+1(x%2=0)F(x)=left{begin{matrix}1; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

小宝定义了一个递归函数F(x),x为正整数且定义域范围x∈[1,1018]xin [1,10^{18}]x∈[1,1018] F(x)={1                                                                                    (x=1)F(x+1)+1      (x≠1    and    x%2=1)F(x/2)+1                                                (x%2=0)F(x)=left{begin{matrix}1; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; (x=1)\ F(x+1)+1; ; ; (xneq 1; ; and; ; x%2=1)\ F(x/2)+1; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; (x%2=0)end{matrix}right.F(x)=⎩⎨⎧​1(x=1)F(x+1)+1(x​=1andx%2=1)F(x/2)+1(x%2=0)​ 现在小宝想要你编写一个程序实现这个函数的反函数功能,也就是说我们输入一个正整数y(y∈[1,109]yin [1,10^{9}]y∈[1,109]),你要找到范围在[1,1018][1,10^{18}][1,1018]内的正整数x,使得F(x)=y。 如果在[1,1018][1,10^{18}][1,1018]内不存在任何一个正整数x使得F(x)=y。请输出"-1"(不含引号)代表无解,如果有多个满足条件的x,你只用随便输出一个大小在[1,1018][1,10^{18}][1,1018]内的合法解即可

HBC214949数圈圈,前缀和,枚举牛牛的反函数题解
-第1张图片-东莞河马信息技术
(图片来源网络,侵删)
想要在职场中立于不败之地?那就来试试全网最全C++题库,让您在练习中快速提升技能。

标签: HBC214949数圈圈 前缀和 枚举牛牛的反函数题解