(错误原因补充)
(关于无解情况的叙述)
 
第6行: 第6行:
 
==题解==
 
==题解==
 
简单递归。
 
简单递归。
 +
 +
根据题目的叙述,int范围内肯定是没有无解情况的(要不然数学家还会找不到反例?),所以不必特判无解情况(输出-1)。
 
==代码==
 
==代码==
 
{{折叠|3038.cpp代码已折叠
 
{{折叠|3038.cpp代码已折叠

2014年10月18日 (六) 09:04的最后版本

摘要

题目链接 难度等级 完成状态 完成分数 最后编辑时间 失误原因(初次提交分数)
3n+1问题 ★☆☆☆☆ 答案正确 100 2014-10-11 12:26:43 输出格式(0)

题意

给出递推式,求求解步数。

题解

简单递归。

根据题目的叙述,int范围内肯定是没有无解情况的(要不然数学家还会找不到反例?),所以不必特判无解情况(输出-1)。

代码

3038.cpp代码已折叠
展开折叠内容
#include<iostream>
const int f(const int &n,const int &step)
{
    if(n==1)
        return step;
    return (n%2)?f(3*n+1,step+1):f(n>>1,step+1);
}
int main()
{
    int n,x;
    std::cin>>n;
    while(n--)
    {
        std::cin>>x;
        std::cout<<f(x,0)<<std::endl;
    }
    return 0;
}

著作权声明[编辑]

关于[编辑]