计算函数值 函数

问题描述

在一个神秘的世界中,存在一个传说中的神秘花园,被认为拥有无限的知识。但要进入这个花园,你必须解决花园入口处的一道神秘数学难题。这个难题与一个特殊的数学函数相关,称为“神秘函数”。

神秘函数 S(x) 的定义如下:

  • 当 x 为 0 时,S(0)=1。

  • 当 x 为偶数时,S(x)=S(x/2)。

  • 当 x 为奇数时,S(x)=S(x−1)+1。

你需要编写一个程序,计算给定正整数 x,神秘函数 S(x) 的值。只有当你正确解决了这道难题,才能获得通行证,进入神秘花园探索其中的知识宝藏。

输入格式

输入包含一个正整数 xx(1≤x≤106),表示你要解决的神秘函数问题。

输出格式

输出一个整数,表示神秘函数 S(x) 的值,即你成功解决问题后得到的答案。

样例输入

7

样例输出

4

说明

在示例中,你需要计算神秘函数 S(7)S(7) 的值。计算过程如下:

S(7)=S(7−1)+1=S(6)+1=S(6/2)=S(3)+1=S(3−1)+1=S(2)+1=S(2/2)=S(1)+1=1+1=2+1=3+1=4S(7)=S(7−1)+1=S(6)+1=S(6/2)=S(3)+1=S(3−1)+1=S(2)+1=S(2/2)=S(1)+1=1+1=2+1=3+1=4

所以,神秘函数 S(7)S(7) 的值为 44。

#include <bits/stdc++.h>
using namespace std;


int f(int x)
{
    int s=0;
    while(x>0)
    {
        if (x % 2 == 1) {
            x = x - 1;
            s++;
        }
        if(x%2==0){
            x=x/2;
        }
    }
    if(x==0) s++;
    return s;
}
int main() {
    int n;
    cin>>n;
    int b=f(n);
    cout<<b;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值