hdu 1279 验证角谷猜想(简单的模拟)

Problem Description

数论中有许多猜想尚未解决,其中有一个被称为“角谷猜想”的问题,该问题在五、六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何一个大于一的自然数,如果是奇数,则乘以三再加一;如果是偶数,则除以二;得出的结果继续按照前面的规则进行运算,最后必定得到一。现在请你编写一个程序验证他的正确性。

Input

本题有多个测试数据组,第一行为测试数据组数N,接着是N行的正整数。

Output

输出验证“角谷猜想”过程中的奇数,最后得到的1不用输出;每个测试题输出一行;每行中只有两个输出之间才能有一个空格;如果没有这样的输出,则输出:No number can be output !。

Sample Input

4
5
9
16
11

Sample Output

5
9 7 11 17 13 5
No number can be output !
11 17 13 5

 1 #pragma comment(linker, "/STACK:1024000000,1024000000")
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<math.h>
 7 #include<algorithm>
 8 #include<queue>
 9 #include<set>
10 #include<bitset>
11 #include<map>
12 #include<vector>
13 #include<stdlib.h>
14 using namespace std;
15 #define ll long long
16 #define eps 1e-10
17 #define MOD 1000000007
18 #define N 1000000
19 #define inf 1e12
20 int n;
21 vector<int> g;
22 int main()
23 {
24     int t;
25     scanf("%d",&t);
26     while(t--){
27         g.clear();
28         scanf("%d",&n);
29         if(n<=1){
30             printf("No number can be output !\n");
31             continue;
32         }
33         while(n!=1){
34             if((n&1) && n!=1) g.push_back(n);
35
36             if(n&1){
37                 n=n*3+1;
38             }else{
39                 n/=2;
40             }
41
42         }
43
44
45         if(g.size()==0){
46             printf("No number can be output !\n");
47             continue;
48         }
49         if(g.size()==1){
50             printf("%d\n",g[0]);
51             continue;
52         }
53         for(int i=0;i<g.size()-1;i++){
54             printf("%d ",g[i]);
55         }
56         printf("%d\n",g[g.size()-1]);
57
58     }
59     return 0;
60 }

时间: 2024-10-09 19:24:08

hdu 1279 验证角谷猜想(简单的模拟)的相关文章

杭电 HDU 1279 验证角谷猜想

验证角谷猜想 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6653    Accepted Submission(s): 3417 Problem Description 数论中有许多猜想尚未解决,其中有一个被称为"角谷猜想"的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何一个大于一的

题解报告:hdu 1279 验证角谷猜想

Problem Description 数论中有许多猜想尚未解决,其中有一个被称为"角谷猜想"的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何一个大于一的自然数,如果是奇数,则乘以三再加一:如果是偶数,则除以二:得出的结果继续按照前面的规则进行运算,最后必定得到一.现在请你编写一个程序验证他的正确性. Input 本题有多个测试数据组,第一行为测试数据组数N,接着是N行的正整数. Output 输出验证"角谷猜想"过程中的奇数,

HDU ACM 1279 验证角谷猜想

水题 #include<iostream> using namespace std; int main() { int n,T; bool flag; cin>>T; while(T--) { cin>>n; flag=false; while(n>1) { if(n%2==0) n/=2; else { if(!flag) { cout<<n; flag=true; } else cout<<" "<<n;

验证角谷猜想(hd1279)

验证角谷猜想 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7196    Accepted Submission(s): 3700 Problem Description 数论中有许多猜想尚未解决,其中有一个被称为“角谷猜想”的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何一个大于一的自然数,如果

HDU-1279 验证角谷猜想

题目链接:点我点我点我 原本以为第一遍会TLE的,虽然复杂度是O(N) 结果发现是自己想多了. 注意0 1输入,屁股别加空格就好了 Problem Description 数论中有许多猜想尚未解决,其中有一个被称为"角谷猜想"的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何一个大于一的自然数,如果是奇数,则乘以三再加一:如果是偶数,则除以二:得出的结果继续按照前面的规则进行运算,最后必定得到一.现在请你编写一个程序验证他的正确性. Input 本题

Openjudge-计算概论(A)-角谷猜想

描述: 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1.如,假定初始整数为5,计算过程分别为16.8.4.2.1. 程序要求输入一个整数,将经过处理得到1的过程输出来. 输入一个正整数输出从输入整数到1的步骤,每一步为一行,每一部中描述计算过程,假定输入为7,则输出为:7*3+1=2222/2=1111*3+1=3434/2=1717*3+1=5252/2=2626/2=1313*3+1=4040/2=202

Hpuoj1039--【C语言训练】角谷猜想

1039: [C语言训练]角谷猜想 时间限制: 1 Sec  内存限制: 128 MB提交: 2  解决: 2[提交][状态][讨论版] 题目描述 角谷猜想: 日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想.猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1.请编程验证. 输入 任一正整数 输出 演算的过程 样例输入 10 样例输出 10/2=5 5*3+1=16 16/

角谷猜想---记忆化搜索

2969 角谷猜想 时间限制: 1 s 空间限制: 32000 KB 题目描述 Description 所谓角谷猜想,即给定一个正整数 n,对 n 反复进行下列两种变换: 1)如果n是偶数,就除以2: 2)如果n是奇数,就乘以3加1. 最后的结果总是1. 我们把从 n 变换到 1 所需要进行的变换次数称做 n 的变换长度,如数字 7 的变换为: 7-22-11-34-17-52-26-13-40-20-10-5-16-8-4-2-1 共进行了 16 次变换,因而 7 的变换长度为 16. Wis

openjudge 角谷猜想

总时间限制:  1000ms 内存限制:  65536kB 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1.如,假定初始整数为5,计算过程分别为16.8.4.2.1. 程序要求输入一个整数,将经过处理得到1的过程输出来. 输入 一个正整数N(N <= 2,000,000) 输出 从输入整数到1的步骤,每一步为一行,每一部中描述计算过程.最后一行输出"End".如果输入为1,直接输出&qu