zoukankan      html  css  js  c++  java
  • [ CodeVS冲杯之路 ] P3038

           不充钱,你怎么AC?

           题目:http://codevs.cn/problem/3038/

      按照题目给定的方法,一步步推下去,直到推到1就输出次数

      至于-1的话,一开始想直接用数组判重,但是怕T掉,于是想用哈希判,不过发现这个最大次数是无法证明的,内存不确定

      然后想到用链表,不过又怕T掉。那么就想换一种方法,从1开始逆向推,把整个数据范围的值都推出来,讲白了就是打个表

      结果交上去WA了,因为某个大数可能是由一个更大的数推出来的,又是无法确定范围

      没想到最后老老实实打了个模拟,没有判-1,竟然A了……(因为目前这个3n+1问题是无法证明的OvO,感觉被坑……)

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<iostream>
     6 #include<algorithm>
     7 #define N 10001
     8 using namespace std;
     9 
    10 int main()
    11 {
    12     int t,x,k;
    13     scanf("%d",&t);
    14     while (t>0)
    15     {
    16         t--;
    17         scanf("%d",&x);
    18         if (x==1)
    19         {
    20             printf("0
    ");
    21             continue;
    22         }
    23         k=0;
    24         while (x!=1)
    25         {
    26             if (x%2==1) x=x*3+1;
    27             else x/=2;
    28             k++;
    29         }
    30         printf("%d
    ",k);
    31     }
    32     return 0;
    33 }
  • 相关阅读:
    二分查找
    苹果开发人员账号注冊流程
    cocos2d_android 瞬间动作
    Qt多线程学习:创建多线程
    Java模式(适配器模式)
    代理方法keywordAction与Fun的使用
    装饰者模式
    编写你自己的单点登录(SSO)服务
    4种Java引用浅解
    strtok和strtok_r
  • 原文地址:https://www.cnblogs.com/hadilo/p/5860076.html
Copyright © 2011-2022 走看看