计算函数值
本文最后更新于 189 天前,其中的信息可能已经有所发展或是发生改变。

问题描述

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

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

  • 当 xx 为 00 时,S(0)=1S(0)=1。
  • 当 xx 为偶数时,S(x)=S(x/2)S(x)=S(x/2)。
  • 当 xx 为奇数时,S(x)=S(x−1)+1S(x)=S(x−1)+1。

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

输入格式

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

输出格式

输出一个整数,表示神秘函数 S(x)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。

评测数据规模

对于 100100% 的评测数据,1≤x≤1061≤x≤106。

运行限制

语言最大运行时间最大运行内存
C++1s128M
C1s128M
Java2s128M
Python33s128M

答案解析

#include <iostream>
using namespace std;

long long fi(int n){
  if(n==0) return 1;
  else if(n==1) return 2;
  else if(n==2) return 2; 
  
  if(n%2==0) return fi(n/2);
  else if(n%2!=0) return fi(n-1)+1;
  
  return 0;
}


int main()
{
  int x;cin>>x;
  int z = fi(x);
  cout<<z<<endl;
  return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇