ytsjdh 2021-12-26 12:03 采纳率: 57.1%
浏览 182
已结题

加数(必须用递归做)

给出一个正整数n(1≤n≤100000)。在n的右边加入n的一半,然后在新数的右边再加入n的一半的一半,一直进行,直到不能再加为止。
例如 n=37 37的一半为18(取整数)加到n的右边成为
3718 18的一半为9,加到新数的右边成为
37189 9的一半为4,加到新数的右边成为
371894 4的一半为2,加到新数的右边成为
3718942 2的一半为1,加到新数的右边成为
37189421 1的一半为0,加数结束,最后得到的数是一个8位的数。

  • 写回答

1条回答 默认 最新

  • 真相重于对错 2021-12-28 15:13
    关注
    
    #include <iostream>
    using namespace std;
    int main()
    {
        int n;
        cin >> n;
        int nh = n / 2;
        int res = n;
        while (nh) {
            int tmp = nh;
            int t = 1;
            while (tmp) {
                t = t * 10;
                tmp = tmp / 10;
            }
            res=res*t + nh;
            nh = nh / 2;
            
        }
        cout << res;
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 已采纳回答 12月29日
  • 创建了问题 12月26日