2847648_re.cc

来自「做的POJ的一些题目」· CC 代码 · 共 44 行

CC
44
字号
#include<iostream>
#include<math.h>
using namespace std;
long long int f(int n,int m)
{
    if(n<=0 || m<=0)
      return 0;
    if(m==1 || n==1)
      return 1;
    if(m>n)
      return f(n,n);
    if(n==m)
    {
        int k=m;
        while(k%2==0)
          k=k/2;
        if(k==1)
           return 1+f(n,n/2);
        else
           return f(n,n-1);    
    }   
    if(n>m)
    {
        int k=m;
        while(k%2==0)
          k=k/2;
        if(k==1)
           return f(n,m/2)+f(n-m,m);
        else
          return f(n,m-1);
    }
}
int main()
{
    int n;
    while(true)
    {
       scanf("%d",&n);
       cout<<f(n,n)<<endl;
    }
    system("pause");
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?