VIJOS-卡布列克圆舞曲(模拟)-c++

该博客介绍了卡布列克圆舞曲现象,即通过不断比较和相减数字重新排列后的数,最终达到一个固定数或循环状态。文中以5位数为例,展示了如何通过模拟计算找出卡布列克圆舞曲的循环节,并给出了输入样例和数据范围。关键在于正确处理数字排序、最大最小数的组合及循环判断。

【问题描述】

  卡布列克是一位数学家,他在研究数字时发现:任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大数减去较小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。例如:

    4321-1234=3087
    8730-378=8352
    8532-2358=6174
    7641-1467=6147

  如果K位数也照此办理,它们不是变成一个数,而是在几个数字之间形成循环,称作卡布列克圆舞曲。例如对于五位数54321:

    54321-12345=41976
    97641-14679=82962--+
    98622-22689=75933  |
    97533-33579=63954  |
    96543-34569=61974  |
    97641-14679=82962--+

  我们把82962 75933 63954 61974称作循环节,即卡布列克圆舞曲。

【输入格式】

  包含若干行,每行为一个待求“卡布列克圆舞曲”的起始整数N。

【输出格式】

  每行为对应整数的循环节,数据之间用空格隔开。

【输入样例】

4321
54321

【输出样例】

6174
82962 75933 63954 61974

【数据范围】

1 < N <= 2147483647。


【问题分析】
模拟过程:
①输入1个k位数→②组成max&min两个数→③cha=max-min→④搜索之前的x是否有与此相同的,如有,输出上一个相同的cha此个cha的前一个;如没有,则继续循环,直到出现相同为止→⑥分析下一个k位数

【关键步骤&

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值