1. 程式人生 > >【天梯賽】1005. 繼續(3n+1)猜想 (25)

【天梯賽】1005. 繼續(3n+1)猜想 (25)

卡拉茲(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 <bits/stdc++.h>
using namespace std;

#define rep(i,a,n) for(int i=a;i<n;i++)
#define mem(a,n) memset(a,n,sizeof(a))
#define pb push_back #define IO ios::sync_with_stdio(false); typedef long long ll; const int N=1e5+5; const double eps=1e-4; const int dir[4][2]= {-1,0,1,0,0,-1,0,1}; bool cmp(int a,int b) { return a>b; } int hashtable[N],a[N]; int main() { int n; cin>>n; rep(i,0,n) { int
x; cin>>x; a[i]=x; while(x!=1) { if(x%2==0) x/=2; else x=(x*3+1)/2; if(x<=100) hashtable[x]=1; } } bool flag=0; sort(a,a+n,cmp); rep(i,0,n) { if(!hashtable[a[i]]) { if(flag) cout<<" "; cout<<a[i]; flag=1; } } return 0; }

相關推薦

天梯1005. 繼續(3n+1)猜想 (25)

卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,我們需要計算3、5、8、4、2、1,則當我們對n=5、8、4

大家都能看懂的演算法1005 繼續(3n+1)猜想

1005 繼續(3n+1)猜想 (25) 卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,我們需要計算3、

PAT 1005繼續(3n+1)猜想 (25)

string stat int() bool spa check logs log pan import java.util.Arrays; import java.util.Scanner; public class Main7 { public static

PAT——1005. 繼續(3n+1)猜想 (25)

ont con 驗證 避免 任務 alt 產生 system.in spa 卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裏,情況稍微有些復雜。 當我們驗證卡拉茲猜想的時候,為了避免重復計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候

1005. 繼續(3n+1)猜想 (25)

一行 正整數 ont gpo stdlib.h 重復 n+1 sca 數字 拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裏,情況稍微有些復雜。 當我們驗證卡拉茲猜想的時候,為了避免重復計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,

PAT 乙級 1005 繼續(3n+1)猜想 (25)(25 分)

1005 繼續(3n+1)猜想 (25)(25 分) 卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,我們需要計算3、5

1005 繼續(3n+1)猜想 (25)(25 分)

卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,我們需要計算3、5、8、4、2、1,則當我們對n=5、8、4、2進行驗證的時候

PAT 1005 繼續(3n+1)猜想 (25)(程式碼)

1005 繼續(3n+1)猜想 (25)(25 分) 卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,我們需要計算3、5

1005 繼續(3n+1)猜想 (25)(25 分)通俗詳解

1001回顧: 1001 害死人不償命的(3n+1)猜想 (15)(15 分) 卡拉茲(Callatz)猜想: 對任何一個自然數n,如果它是偶數,那麼把它砍掉一半;如果它是奇數,那麼把(3n+1)砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到n=1。卡拉茲在19

1005. 繼續(3n+1)猜想 (25)(java實現)

卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,我們需要計算3、5、8、4、2、1,則當我們對n=5、8、4、2進行驗證的時候,就可以直接判定卡拉茲猜想的真

1005. 繼續(3n+1)猜想 (25) PAT乙級真題

1005. 繼續(3n+1)猜想 (25)卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的

PAT 1005. 繼續(3n+1)猜想 (25) java

卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,我們需要計算3、5、8、4、2、1,則當我們對n=5、8、4、2進行驗證的時候,就可以直接判定卡拉茲猜想

python3之1005.繼續(3n+1)猜想 (25分)

題目仍然贅述一下: 卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 (1001.卡拉茲(Callatz)猜想: 對任何一個自然數n,如果它是偶數,那麼把它砍掉一半;如果它是奇數,那麼把(3n+1)砍掉一半。這樣一直反覆砍下去

PATB1005 繼續(3n+1)猜想25 分)

tdi can scanf code ret return amp emp ++ #include<stdio.h> #include<algorithm> using namespace std; int Table[1000]={0}; bool

PAT 1005 繼續(3n+1)猜想

play 直接 pos != gpo ng- cal 其他 color 1005. 繼續(3n+1)猜想 (25) 卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裏,情況稍微有些復雜。 當我們驗證卡拉茲猜想的時候,為了避免重復計算,可以記錄下遞推過程

1005. 繼續(3n+1)猜想

include for scanf 標記 n) 輸出 pos stdlib.h 題目 題目截圖: 思路:   對輸入的每個數字進行驗證,並標記已經驗證過的數字。最後沒有標記的即為所求的關鍵數。 代碼: 1 /* 2 1005. 繼續(3n+1)猜想

PAT-乙級-1005 繼續(3n+1)猜想

避免 names iostream base clu 測試 順序輸出 math problem 卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裏,情況稍微有些復雜。 當我們驗證卡拉茲猜想的時候,為了避免重復計算,可以記錄下遞推過程中遇到的每一個數。

1005 繼續(3n+1)猜想25 分)

卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對 n=3 進行驗證的時候,我們需要計算 3、5、8、4、2、1,則當我們對 n=5、8、4、2 進行驗證的

PAT:1005 繼續(3n+1)猜想25 分)C語言

PAT 1005 繼續(3n+1)猜想(25 分) C語言 #include<stdio.h> int main() { int n; scanf("%d", &n); //輸入n個整數 int zs[n]; for(in

1005 繼續(3n+1)猜想——C++實現

題目 1005 繼續(3n+1)猜想 (25 point(s)) 卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對 n=3 進行驗證的時候,我