描述

给出一个正整数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位的数

输入描述

整数n

输出描述

加数结束后新数的长度。

用例输入 1 

37

用例输出 1 

8

来源

省赛 递归 字符串

代码

#include<bits/stdc++.h>

#include<string>

#include<algorithm>

using namespace std;

int a[105][105]={},i,j,s;

int ch(int n){
    
    int s=0;
    
    while(n>=1){
        
        s++;
        
        n=n/10;
        
    }
    
    return s;
    
}

int sh(int s){
    
    if(s==0){
        
        return 0;
        
    }
    
    else{
        
        return ch(s)+sh(s/2);
        
    }
    
}

int main(){
    
    cin>>s;
    
    cout<<sh(s);
    return 0;
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐