卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。

当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、 2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我 们称5、8、4、2是被3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列中的其他数字所覆盖。

现在给定一系列待验证的数字,我们只需要验证其中的几个关键数,就可以不必再重复验证余下的数字。你的任务就是找出这些关键数字,并按从大到小的顺序输出它们。

输入格式:每个测试输入包含1个测试用例,第1行给出一个正整数K(<100),第2行给出K个互不相同的待验证的正整数n(1<n<=100)的值,数字间用空格隔开。

输出格式:每个测试用例的输出占一行,按从大到小的顺序输出关键数字。数字间用1个空格隔开,但一行中最后一个数字后没有空格。

输入样例:

6
3 5 6 7 8 11

输出样例:

7 6

================================================================
IDEA:
首先,在接收数列的时候,共分成两层循环:
外循环: 负责接收 每次 输入的数列中的数据 将其存入 数组 K[] 中,
  内循环: 负责将每次 接收到的数据 进行 卡拉兹猜想 操作,将 接收的数据进行拆分后 存放到: COVER[cov_len++]中,
  
所以在 外循环结束 整个数列的接收操作之后, COVER中已经将 接收到全部的数列的 所有 覆盖数 (K[i] 的 覆盖数不包括 K[i]本身)存放到数组COVER中了。 因为,在题目中 并没有表示 输入样例一定是按照 非递减 的顺序 输入的,
并且 在输出样例中 要求的是 数据时按照 非递增的 方式输出的, 所以,在接下来的步骤中,对 数列K[0...k-1] 进行一个排序是很有必要的。 排序K[0..k-1] 然后,再次执行一个双层循环
外循环: 一次遍历 K[0..k-1] 中的每一个数字
{
   { 内循环: 获取外循环的 第 i 个 K 元素 K[i] ,对COVER 进行一个j->[0..cov_len -1] 的遍历
        if K[i] == COVER[j] break 当前循环: 说明 数列 K[i] 在 COVER中是存在的,即 K[i] 是被覆盖的
   }
   if j == cov_len - 1 : 说明 当前K[i] 在 COVER中 [0..cov_len]是不存在的,故 K[i]是我们要找的关键字
   {
     但是,在这里并不要急着输出,因为,我们不知道K[i] 是否是 关键字的最后一个,即 K[i] 数列中的最后一个 元素 并不一定是 关键字的最后一个
     而且,在题目中明确要求,如果是最后一个关键字的话,输出的时候是不需要加空格的,
     所以,没法保证空格的添加满足题意, 所以先将其 存放起来:
    out [out_len++] = K[i]
    }
} 输出关键字,数组: for ( 0.. out_len-1 )
printf(out[i])
if ( i != out_len -1 )
printf (" ") 另外,在数组 长度的选取方面也是需要注意的, 通过K 的值可知道 个数[1,100] , 通过n [1,100] 可以知道,在 1到100 之间最多的 需要几次 猜想。
而且从 前一个程序中 可以知道, 在对 1 到 100 数字之间,最多的一个猜想次数是 97 :75 次, 所以覆盖数目最多可以 100*100 =10000 次,
根据这个,可以设定 COVER 的数组的数目。
==========================================================================
SRC:
#include <stdio.h>

int main ()
{
int X ;
int COVER[], cov_len ;
int K[] ,tmp ;
int loop , i,j ;
int out[] , out_len ; scanf ("%d", &loop ) ; cov_len = ; for ( i = ; i < loop ; i++ )
{ scanf("%d" , &X ) ; K[i] = X ; while(X!=)
{
if ( X%)
{
X = (*X+)/ ;
COVER[cov_len++] = X ;
}
else
{
X = X/ ;
COVER[cov_len++] = X ;
}
}
} //sort K [] non incr
for ( i = ; i < loop ; i++ )
{
for ( j = i+ ; j < loop ; j++ )
{
if ( K[i] < K[j] )
{
tmp = K[i] ;
K[i] = K[j] ;
K[j] = tmp ;
}
}
} //visit K [k_len .. 0] in order to printf K non-desc out_len = ; for ( i = ; i < loop ; i++ )
{
for (j = ; j < cov_len ; j++)
{
if ( K[i] == COVER[j])
{
break ;
} } if ( j==cov_len )
{
out[out_len++] = K[i] ;
} } for ( i = ; i < out_len; i++ )
{
printf("%d" , out[i]) ;
if ( i != out_len- )
{
printf(" ") ;
}
} return ; }
//pass:25  o(≧v≦)o~~

继续(3n+1)猜想的更多相关文章

  1. 1001. 害死人不偿命的(3n+1)猜想 (15)

    1001. 害死人不偿命的(3n+1)猜想 (15) 较简单,直接代码实现: #include <cstdio> int main() { int n; scanf("%d&qu ...

  2. PAT 乙级 1005. 继续(3n+1)猜想 (25)

    1005. 继续(3n+1)猜想 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B   卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情 ...

  3. PAT乙级 1005. 继续(3n+1)猜想 (25)

    1005. 继续(3n+1)猜想 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Callatz ...

  4. PAT乙级 1001. 害死人不偿命的(3n+1)猜想 (15)

    1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...

  5. PAT-乙级-1001. 害死人不偿命的(3n+1)猜想 (15)

    1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...

  6. 1001. 害死人不偿命的(3n+1)猜想

    /* * Main.c * 1001. 害死人不偿命的(3n+1)猜想 * Created on: 2014年8月27日 * Author: Boomkeeper *********测试通过***** ...

  7. 9-9害死人不偿命的(3n+1)猜想

    1001. 害死人不偿命的(3n+1)猜想 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Ca ...

  8. PAT (Basic Level) Practice (中文)1001 害死人不偿命的(3n+1)猜想

    1001 害死人不偿命的(3n+1)猜想 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍下去,最后一 ...

  9. (数学) PTA 1005 继续(3n+1)猜想 (25 分)

    1005 继续(3n+1)猜想 (25 分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程 ...

  10. [C++]PAT乙级1005. 继续(3n+1)猜想 (25/25)

    /* 1005. 继续(3n+1)猜想 (25) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推 ...

随机推荐

  1. (转载)Flash Loader加载完成不发送COMPLETE和ERROR事件的问题分析

    (转载)http://blog.dou.li/flash-loader%E5%8A%A0%E8%BD%BD%E5%AE%8C%E6%88%90%E4%B8%8D%E5%8F%91%E9%80%81co ...

  2. 查看当前hadoop的版本号

    查看当前hadoop的版本号: 2015-01-20 20:58:03

  3. WP8模拟器需要BIOS开启虚拟化支持(转载)

    在BIOS里启用hypervisor和virtualization,然后安装WP8 SDK. 如果出现“当前用户未添加到Hyper-V管理组时”, 以管理员身份运行CMD: net localgrou ...

  4. Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd

    题目:http://cojs.tk/cogs/problem/problem.php?pid=309 309. [USACO 3.2] 香甜的黄油 ★★   输入文件:butter.in   输出文件 ...

  5. Dijkstra算法求解最短路径分析

    最短路径是图论算法中的经典问题.图分为有向图.无向图,路径权值有正值.负值,针对不同的情况需要分别选用不同的算法.在维基上面给出了各种不同的场景应用不同的算法的基本原则:最短路问题. 针对无向图,正权 ...

  6. [转]在 Mac OS X 终端里使用 Solarized 配色方案

    相信长期浸泡在终端和代码的小伙伴们都有一套自己喜爱的配色方案.以前一直在用简单.适合阅读的 Terminal.app 配色方案,换到 MacBook Pro with Retina display 后 ...

  7. hdoj 5137 How Many Maos Does the Guanxi Worth【最短路枚举+删边】

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  8. jQuery 的属性操作方法

    jQuery 属性操作方法 下面列出的这些方法获得或设置元素的 DOM 属性. 这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html(). 方法 描述 addClass() 向匹配的 ...

  9. 反射——类(Class)

    本文原创,转载请注明原处! 红色代表的是基本组件:包(Package),修饰符(modifier),类(Class),字段(Field),构造器(Constructor)和方法(Method). 黄色 ...

  10. Mina学习之IoFilter

    IoFilter 是MINA中的一个核心结构,扮演了非常重要的角色.IoFilter在IoService和IoHandler过滤了所有的I/O 事件和请求.如果你有做个web项目的经验,则很类似于we ...