天梯賽 L2 029 特立獨行的幸福

2022-06-19 03:45:10 字數 1744 閱讀 1690

對乙個十進位制數的各位數字做一次平方和,稱作一次迭代。如果乙個十進位制數能通過若干次迭代得到 1,就稱該數為幸福數。1 是乙個幸福數。此外,例如 19 經過 1 次迭代得到 82,2 次迭代後得到 68,3 次迭代後得到 100,最後得到 1。則 19 就是幸福數。顯然,在乙個幸福數迭代到 1 的過程中經過的數字都是幸福數,它們的幸福是依附於初始數字的。例如 82、68、100 的幸福是依附於 19 的。而乙個特立獨行的幸福數,是在乙個有限的區間內不依附於任何其它數字的;其獨立性就是依附於它的的幸福數的個數。如果這個數還是個素數,則其獨立性加倍。例如 19 在區間[1, 100] 內就是乙個特立獨行的幸福數,其獨立性為 2。

另一方面,如果乙個大於1的數字經過數次迭代後進入了死迴圈,那這個數就不幸福。例如 29 迭代得到 85、89、145、42、20、4、16、37、58、89、…… 可見 89 到 58 形成了死迴圈,所以 29 就不幸福。

本題就要求你編寫程式,列出給定區間內的所有特立獨行的幸福數和它的獨立性。

input

輸入在第一行給出閉區間的兩個端點:1

output

按遞增順序列出給定閉區間 [ 內的所有特立獨行的幸福數和它的獨立性。每對數字佔一行,數字間以 1 個空格分隔。

如果區間內沒有幸福數,則在一行中輸出sad

input

10 40

19 8 23 6 28 3 31 4 32 3

樣例中,10、13 也都是幸福數,但它們分別依附於其他數字(如 23、31 等等),所以不輸出。其它數字雖然其實也依附於其它幸福數,但因為那些數字不在給定區間 [10, 40] 內,所以它們在給定區間內是特立獨行的幸福數。

只要for一遍,就好了。

num陣列記錄到1經歷了多少次。把中間經歷的數都標記為-1

如果最後到1就退出。到4就把這個數標記為-1,意思是 不是,然後退出。

最後找沒有標記為-1的數,然後輸出就好了。

#include #include 

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int inf=0x7fffffff

;const

int n=10000+100

;int

has[n],num[n];

void solve(int

x) num[c]++;

if(tt==1

)

break

;

if(tt==4

)

has[tt]=-1

; x=tt;

}}bool check(int

x)int

main()

for(int i=a;i<=b;i++)

if(has[i]!=-1

)

if(flag==0

) cout

<

sad"

<

return0;

}

view code

天梯賽準備 天梯賽L1(總結)

今天打完pta了,還是太菜了。把以前整理的關於pta的心得發一下出來吧,希望以後有需要的朋友能夠方便一點吧。l1 035 情人節 字串比較可以直接用等號,也可以用strcmp函式 0為相同 字元比較則也可以用等號 include using namespace std int main if sum...

團體程式設計天梯賽 L1 011 L1 015

l1 011 思路 用map存不需要輸出的字元 pragma gcc optimize 2 include using namespace std string s map char bool mp intmain l1 012 思路 1 pragma gcc optimize 2 include ...

團體程式設計天梯賽 L1 056 L1 060

l1 056 思路 這裡算出來相減排個序即可 include using namespace std typedef pair int,string p intmain ans int 1.0 ans n 2 cout ans for p p v p.first abs p.first ans so...