演算法訓練 寂寞的數

2021-08-04 13:23:44 字數 1005 閱讀 2724

問題描述

道德經曰:一生二,二生三,三生萬物。

對於任意正整數n,我們定義d(n)的值為為n加上組成n的各個數字的和。例如,d(23)=23+2+3=28, d(1481)=1481+1+4+8+1=1495。

因此,給定了任意乙個n作為起點,你可以構造如下乙個遞增序列:n,d(n),d(d(n)),d(d(d(n)))….例如,從33開始的遞增序列為:

33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, …

我們把n叫做d(n)的生成元,在上面的數列中,33是39的生成元,39是51的生成元,等等。有一些數字甚至可以有兩個生成元,比如101,可以由91和100生成。但也有一些數字沒有任何生成元,如42。我們把這樣的數字稱為寂寞的數字。

輸入格式

一行,乙個正整數n。

輸出格式

按照公升序輸出小於n的所有寂寞的數字,每行乙個。

樣例輸入

40 樣例輸出

1 3

5 7

9 20

31 資料規模和約定

n<=10000

#include 

using

namespace

std;

int main()

if(sum==i)

break;

}if(k==i)

cout

0;}

以上**執行時,最後乙個測試用例會超時,因此考慮用陣列儲存

改進**:

#include 

#include

using

namespace

std;

int main()

flag[sum]=1;//表示sum不為寂寞的數,標記為1

}for(i=1;iif(flag[i]==0)

cout

0;}

演算法訓練 寂寞的數

演算法訓練 寂寞的數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 道德經曰 一生二,二生三,三生萬物。對於任意正整數n,我們定義d n 的值為為n加上組成n的各個數字的和。例如,d 23 23 2 3 28,d 1481 1481 1 4 8 1 1495。因此,給定了任意乙個n作為起...

演算法訓練 寂寞的數

題目鏈結 問題描述 道德經曰 一生二,二生三,三生萬物。對於任意正整數n,我們定義d n 的值為為n加上組成n的各個數字的和。例如,d 23 23 2 3 28,d 1481 1481 1 4 8 1 1495。因此,給定了任意乙個n作為起點,你可以構造如下乙個遞增序列 n,d n d d n d ...

藍橋杯 ALGO 119 演算法訓練 寂寞的數

問題描述 道德經曰 一生二,二生三,三生萬物。對於任意正整數n,我們定義d n 的值為為n加上組成n的各個數字的和。例如,d 23 23 2 3 28,d 1481 1481 1 4 8 1 1495。因此,給定了任意乙個n作為起點,你可以構造如下乙個遞增序列 n,d n d d n d d d n...