摘要

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

题意

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

题解

简单递归。

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

代码

3038.cpp代码已折叠
展开折叠内容
显示/移除行号
  1. #include<iostream>
  2. const int f(const int &n,const int &step)
  3. {
  4. if(n==1)
  5. return step;
  6. return (n%2)?f(3*n+1,step+1):f(n>>1,step+1);
  7. }
  8. int main()
  9. {
  10. int n,x;
  11. std::cin>>n;
  12. while(n--)
  13. {
  14. std::cin>>x;
  15. std::cout<<f(x,0)<<std::endl;
  16. }
  17. return 0;
  18. }

著作权声明[编辑]

关于[编辑]