首页 > 其他分享 >1005 继续(3n+1)猜想

1005 继续(3n+1)猜想

时间:2022-09-30 16:34:30浏览次数:46  
标签:猜想 验证 int flag 3n 1005 include 数字

1.1 题目

1.2 思路

1.3 代码

 

题目:

卡拉兹(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
   

思路:

运用了散列的思想:将一个数作为数组的下标来对这个数的性质进行统计。

 

代码:

#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
using namespace std;
int main(){
    int n;
    int a[10000],d[10000]={0};
    bool flag = false;
   
    scanf("%d",&n);
    for(int i = 0;i < n;i++){
        scanf("%d",&a[i]);
        int o = a[i];
        while(o>1){
            if(o % 2 == 0){
                o /= 2;
                d[o] = a[i];
            }else{
                o = (o * 3 + 1) / 2;
                d[o] = a[i];
            }
        }
    }
    sort(a,a+n,greater<int>());
    for(int i = 0;i < n;i++){
        if(d[a[i]] == 0){
            flag == false ? flag = true : printf(" ");
            printf("%d",a[i]);
        }
    }
    return 0;
}

 

标签:猜想,验证,int,flag,3n,1005,include,数字
From: https://www.cnblogs.com/yccy/p/16745325.html

相关文章

  • EG3033,3NMOS+3PMOS三相半桥驱动芯片
    1. 特性  三相 P/NMOS 管栅极驱动  电源电压输入范围:6V-36V  适应 3V-30V 输入电压  具有 VCC 欠压保护  内置 5V/50mA 输出 LDO  内建死区控制电路......
  • pta甲级1005-1009+cf每日水题
    1005:简单模拟,数组打表1#include<bits/stdc++.h>2usingnamespacestd;3#defineintlonglong4#defineIOSios_base::sync_with_stdio(0);cin.tie(0);cout.......
  • PAT (Basic Level) Practice 1005 继续(3n+1)猜想 分数 25
    卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如......
  • 2022.9.20 1005-1008
    1005#include<stdio.h>#include<stdlib.h>#include<math.h>intmain(){unsignedlonglongn;scanf("%llu",&n);unsignedlonglongm=(unsignedlonglong......
  • T1005: 地球人口承载力估计(信息学一本通C++)
    [题目描述]假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供x亿人生活a年,或供y亿人生活b年。为了能够实现可持续发展,避免资源枯竭,地球最多......
  • 月出の杂谈 | 我有一个大胆的猜想!
    在线性规划问题里,如果原问题是退化最优解,则对偶问题是无穷多最优解,反之亦然!不知道这种猜想1.有没有人证明,2.我证明了能否发论文哈哈哈哈记录提出者/提出时间:东南大......
  • 中断调用之猜想
    在launcher.asm中,使用了launch_applications过程三次调用了int0x40去启动3个应用,构成了桌面背景,桌面图标和底部任务栏。这三次调用使用了eax,放置调用号19。ebx放置了应用......
  • 查尔斯·达纳的达纳猜想
    查尔斯·达纳的达纳猜想DefinitionofaConjecture.当我写这些行时,我对数学大厦的第一个贡献是在互联网上直播。我在业余时间工作四年的结果。我不会发表长篇演讲来描......
  • 信息学一本通 1005:地球人口承载力估计
    时间限制:1000ms      内存限制:65536KB提交数:113684   通过数:64422【题目描述】假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资......
  • P1005 [NOIP2007 提高组] 矩阵取数游戏 题解
    luogu原题传送门[NOIP2007提高组]矩阵取数游戏题目描述帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的\(n\timesm\)的矩阵,矩阵中的每个元素\(a_{i,j}\)均为非......