VIJOS 卡布列克圓舞曲 模擬 c

2021-08-07 04:45:37 字數 1428 閱讀 7483

【問題描述】

卡布列克是一位數學家,他在研究數字時發現:任意乙個不是用完全相同數字組成的四位數,如果對它們的每位數字重新排序,組成乙個較大的數和乙個較小的數,然後用較大數減去較小數,差不夠四位數時補零,類推下去,最後將變成乙個固定的數:6174,這就是卡布列克常數。例如:

4321-1234=3087

8730-378=8352

8532-2358=6174

7641-1467=6147

如果k位數也照此辦理,它們不是變成乙個數,而是在幾個數字之間形成迴圈,稱作卡布列克圓舞曲。例如對於五位數54321:

54321-12345=41976

97641-14679=82962--+

98622-22689=75933  |

97533-33579=63954  |

96543-34569=61974  |

97641-14679=82962--+

我們把82962 75933 63954 61974稱作迴圈節,即卡布列克圓舞曲。

【輸入格式】

包含若干行,每行為乙個待求「卡布列克圓舞曲」的起始整數n。

【輸出格式】

每行為對應整數的迴圈節,資料之間用空格隔開。

【輸入樣例】

4321

54321

【輸出樣例】

6174

82962 75933 63954 61974

【資料範圍】

1 < n <= 2147483647。

【關鍵步驟&技巧】

1. 雖然大體步驟不多,然而中間小過程的處理還是有點繁瑣,若哪手抖打錯,debug還是有點累的啦,因此某些步驟還是寫作自定義函式封裝起來,for 程式的可讀性,also for debugging

2. 資料的第一遍讀入時應先得到它的位數,再進行排序組成max&min,畢竟後面的cha的位數必須和原數相同(不同則補0)

所以 3. max&min的組成技巧:將各個數字的數拆散排序存入a[ ]後,for迴圈t-1次(t為位數),定義乙個s=max(or min)最大位數的那個數,迴圈內容:s=s*10+a[i]

優點:保證max、min、cha都是k位數

4. 記得每次求得的cha應儲存在cha[ ]中;

關鍵**:

int a[15]

while(scanf("%lld",&n)==1)

if(flag==0)break;

} max=maxn(t);min=minn(t);

cha[k]=max-min;

int flag=0;//記錄下標

for(int i=1;iif(cha[k]==cha[i])

if(flag!=0)

}}

卡布列克圓舞曲

卡布列克是一位數學家,他在研究數字時發現 任意乙個不是用完全相同數字組成的四位數,如果對它們的每位數字重新排序,組成乙個較大的數和乙個較小的數,然後用較大數減去較小數,差不夠四位數時補零,類推下去,最後將變成乙個固定的數 6174,這就是卡布列克常數。例如 4321 1234 3087 8730 3...

C 求素數 卡布列克運算

1.用迴圈求1 100之間的所有素數,顯示並輸出結果。using system usingsystem.collections.generic using system.linq using system.text namespace q1 class program static void mai...

布列瑟農 狼

我行走在秋風瑟瑟的草原上,我又掉隊了,我不知道兄弟們的朝哪個方向去了,夜越來越深,我不怕危險,但我害怕寂寞.我沿著鐵路,幻想越過去,但我又不敢靠近.這是我聽這首歌想到的場景,一次深夜,我聽到這首歌醒來,我以為我又沒有關電腦,原來是從來面傳來的,夜籠罩在曲子渲染的憂鬱氣氛中,我站在視窗,想聽聽聲音從 ...