嘘~ 正在从服务器偷取页面 . . .

洛谷U148838 数学黑洞 题解


洛谷U148838 数学黑洞 题解

题目链接:U148838 数学黑洞

本题为私题,作者 q779 (没错,就是本人!

题意

给定 \(N \le 10^{114514}\) ,求 \(F(N)=f(f(f(\cdots f(N))))\)​ 。

其中 \(f(N)=N\) 中偶数的个数 \(\times 100+ N\) 中奇数的个数 \(\times 10 + N\) 的位数。

例如 \[ f(345)=1\times100+2\times10+3=123 \] 题目保证一定有解。

输入:一行,\(N\)​ 。 输出:一行,答案。

这道题是我初中的时候出的,当时从学校的数学报纸上看到的,难度评级入门到普及-吧。

实际上就是“西西弗斯串”(也叫 \(123\) 数字黑洞),有兴趣可以百度(百度写的还可以)。

注意到 \(f(123)=123\) ,即 \(123\)​ 是原题的一个不动点。有趣的是,实际上任何 \(N \in \mathbb{Z}\)\(F(N)=123\)​ 。

以下记 \(f\) 中的三个数分别为 \(a,b,c\) ,即 \(f(N) = 100a + 10b + c\)

证明其实很简单,我们只需要分类讨论即可

  • \(N\)​ 是一位数时
    • \(N\) 为奇数,则 \(a=0,~b=1,~c=1\) 得到 \(011\) ,接着 \(a=1,~b=2,~c=3\) 得到 \(123\)
    • \(N\) 为偶数,则 \(a=1,~b=0,~c=1\) 得到 \(101\) ,接着 \(a=1,~b=2,~c=3\) 得到 \(123\)
  • \(N\) 是两位数时
    • 一奇一偶,则 \(a=1,~b=1,~c=2\) 得到 \(112\) ,接着 \(a=1,~b=2,~c=3\) 得到 \(123\)
    • 两个奇数,则 \(a=0,~b=2,~c=2\) 得到 \(022\) ,然后得到 \(303\) ,最后还是得到 \(123\)​ 。
    • 两个偶数,则 \(a=2,~b=0,~c=2\) 得到 \(202\) ,然后得到 \(303\) ,最后还是得到 \(123\)​ 。
  • \(N\) 是三位数时
    • 三个偶数,则 \(a=3,~b=0,~c=3\) 得到 \(303\) ,接着 \(a=1,~b=2,~c=3\) 得到 \(123\)
    • 三个奇数,则 \(a=0,~b=3,~c=3\) 得到 \(033\) ,接着 \(a=1,~b=2,~c=3\) 得到 \(123\)
    • 两个偶数+一个奇数,则 \(a=2,~b=1,~c=3\) 得到,接着 \(a=1,~b=2,~c=3\) 得到 \(123\)
    • 一个偶数+两个奇数,则 \(a=1,~b=2,~c=3\) 直接得到 \(123\)​ 。
  • \(N\) 是四位数即四位数以上时,\(c=a+b\) ,显然一次变化后比 \(N\) 小,最终一定变成三位数的情况。\(\square\)

所以只需要输出 \(123\) 即可。时间复杂度 \(\mathcal{O}(1)\) ,主要代码就是:puts("123")


参考文献

你别说,我出这题的时候还真不会证明呢(那时候哪有空证明这种东西啊)。

[1] https://baike.baidu.com/item/%E6%95%B0%E5%AD%A6%E9%BB%91%E6%B4%9E/3627700?fromtitle=%E8%A5%BF%E8%A5%BF%E5%BC%97%E6%96%AF%E4%B8%B2&fromid=7970829


文章作者: q779
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 q779 !
评论
  目录