zoukankan      html  css  js  c++  java
  • 1005. 继续(3n+1)猜想

    题目截图:

    思路:

      对输入的每个数字进行验证,并标记已经验证过的数字。最后没有标记的即为所求的关键数。

    代码:

     1 /*
     2     1005. 继续(3n+1)猜想
     3 */
     4 
     5 #include <stdio.h>
     6 #include <string.h>
     7 #include <math.h>
     8 #include <stdlib.h>
     9 #include <time.h>
    10 
    11 #define maxn 10001
    12 int p[maxn] = {0};        // p[i]=1 表示 i 已验证 
    13 int v[maxn] = {0};         // 存储输入数据 
    14 
    15 // 逆序 
    16 int cmp(const void* a, const void* b) {
    17     return *(int*)b - *(int*)a;
    18 }
    19 
    20 int main() {
    21     int k, i, n, flag=0;
    22     scanf("%d", &k);
    23     for(i=0; i<k; ++i) {
    24         scanf("%d", &n);
    25         v[i] = n;
    26         while(n != 1) {            // 模拟 3n+1 猜想 
    27             if(n & 1) {            // 奇数 
    28                 n = n*3+1;
    29             }
    30             n /= 2;
    31             p[n] = 1;            // 标记为已验证 
    32         }
    33     }
    34     qsort(v, k, sizeof(int), cmp);    // 逆序排序 
    35     for(i=0; i<k; ++i) {            // 按格式输出 
    36         if(!p[v[i]]) {
    37             if(flag) {
    38                 printf(" ");
    39             }
    40             printf("%d", v[i]);
    41             flag = 1;
    42         }
    43     }
    44 
    45     return 0;
    46 }
  • 相关阅读:
    常见错误集锦
    auto 迭代器的使用
    案例:带有动画的返回顶部
    案例:toDoList
    jQuery事件
    案例:发布微博功能
    案例:购物车功能模块
    jQuery常用的API
    案例:王者荣耀手风琴效果
    案例:jQuery实现tab栏切换功能
  • 原文地址:https://www.cnblogs.com/coderJiebao/p/PAT1005.html
Copyright © 2011-2022 走看看