3n+1

任腾 发表于 2007-08-14 01:41:52

    1.  #include <cstdio>
    2.  #include <algorithm>
    3.  #include <string>
    4.  #define maxn 1000001
    5.  using namespace std;
    6.  int d[maxn]={0},a,b,a0,b0;
    7.  
    8.  int calc(long long x){
    9.    int ret=0;
   10.    while (x!=1&&(x>=maxn||!d[x])){
   11.      ++ret;
   12.      if (x&1) x=x+x+x+1;
   13.      else x>>=1;
   14.    }
   15.    ret+=d[x];
   16.    return ret;
   17.  }
   18.  
   19.  int main(){
   20.    for (int i=1;i<maxn;i++) if (!d[i])
   21.      d[i]=calc(i);
   22.  
   23.    while (scanf("%d%d",&a0,&b0)==2){
   24.      a=min(a0,b0);
   25.      b=max(a0,b0);
   26.      int ans=0;
   27.      for (int i=a;i<=b;i++)
   28.        ans>?=d[i];
   29.      printf("%d %d %d\n",a0,b0,ans+1);
   30.    }
   31.    return 0;
   32.  }
关键词(Tag): c++ uva algorithm code


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定