C語言深入探究水仙花數(shù)與變種水仙花數(shù)代碼
1.水仙花
題目:
1.1先看代碼
#include <stdio.h> int main() { int i = 0; int count = 0; for (i = 100; i<= 999; i++) { int a = i / 100; int b = (i % 100)/10; int c = (i % 100)%10; if (i == a * a * a + b * b * b + c * c * c) { printf("%d ", i); count++; } } printf("\ncount=%d\n", count); return 0; }
1.2大體邏輯
a.題中說三位數(shù)中,因此第一步就要?jiǎng)?chuàng)建三位數(shù)100~999,最常用的方法就是 for()循環(huán)來創(chuàng)建
b. 153=1*1*1+5*5*5+3*3*3
求出 i 這個(gè)三位數(shù)中的百位、千位、個(gè)位;然后立方相加 判斷 是否等于 i 就可以了
c.如何計(jì)算得出有多少個(gè)這樣的數(shù)呢?在這里需要定義一個(gè)變量count專門來計(jì)算個(gè)數(shù)。如下
2.變種水仙花數(shù)
題目:
2.1先看代碼
#include <stdio.h> int main() { int i = 0; for (i = 10000; i <= 99999; i++) { int j = 10; int sum = 0; int tmp = i; for (j = 10; j <= 10000; j *= 10) { sum += (tmp % j) * (tmp / j); } if (sum == i) { printf("%d ", i); } } return 0; }
2.2代碼剖析
a.題中說五位數(shù)中,因此第一步就要?jiǎng)?chuàng)建五位數(shù)10000~99999,還是用 for()循環(huán)來創(chuàng)建
b. 類似于
14610=1*4610+14*610+146*10+1461*0
14610/10000=1 14610%10000=4610
14610/1000=14 14610%1000=610
14610/100=146 14610%100=10
14610/10=1461 14610%10=0
看出邏輯了嗎?用到循環(huán)來解
這串代碼中:如果上面的 i 輸入是16420,
sum=0 + (16420 % 10) * (16420 / 10) = 0*1642
sum=0 * 1642 + (16420 % 100) * (16420 / 100) = 0 * 1642 + 20 * 164
......
sum= 0 * 1642 + 20 *1 64 + 420 * 16 + 6420 * 1
一一列出就可以看出來循環(huán)的意思了
到此這篇關(guān)于C語言深入探究水仙花數(shù)與變種水仙花數(shù)代碼的文章就介紹到這了,更多相關(guān)C語言水仙花數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++深入探究哈希表如何封裝出unordered_set和unordered_map
哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過把關(guān)鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點(diǎn)復(fù)雜,我想我舉個(gè)例子你就會(huì)明白了,最典型的的例子就是字典2022-06-06C++11?nullptr實(shí)現(xiàn)初始化空指針
避免產(chǎn)生“野指針”最有效的方法,就是在定義指針的同時(shí)完成初始化操作,本文主要介紹了C++11?nullptr初始化空指針,感興趣的可以了解一下2022-01-01關(guān)于C++智能指針shared_ptr和unique_ptr能否互轉(zhuǎn)問題
C++中的智能指針最常用的是shared_ptr和unique_ptr,C++新手最常問的問題是我從一個(gè)函數(shù)中拿到unique_ptr,但要轉(zhuǎn)成shared_ptr才能使用,要怎么轉(zhuǎn)換?同理是否能將shared_ptr轉(zhuǎn)換成unique_ptr,面對這些問題,跟隨小編一起看看吧2022-05-05cocos2dx-3.10 C++實(shí)現(xiàn)滾動(dòng)數(shù)字
這篇文章主要為大家詳細(xì)介紹了cocos2dx-3.10 C++實(shí)現(xiàn)滾動(dòng)數(shù)字效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09Matlab利用垂距法實(shí)現(xiàn)提取離散坐標(biāo)數(shù)據(jù)特征點(diǎn)
垂距法是指根據(jù)中間頂點(diǎn)到其前、后兩相鄰頂點(diǎn)連線的距離的大小,來確定是否保留該頂點(diǎn)的一種線要素頂點(diǎn)壓縮算法。本文將利用這一算法實(shí)現(xiàn)提取離散坐標(biāo)數(shù)據(jù)特征點(diǎn),需要的可以參考下2022-04-04C/C++中的?Qt?StandardItemModel?數(shù)據(jù)模型應(yīng)用解析
QStandardItemModel?是標(biāo)準(zhǔn)的以項(xiàng)數(shù)據(jù)為單位的基于M/V模型的一種標(biāo)準(zhǔn)數(shù)據(jù)管理方式,本文給大家介紹C/C++中的?Qt?StandardItemModel?數(shù)據(jù)模型應(yīng)用解析,感興趣的朋友跟隨小編一起看看吧2021-12-12linux c 查找使用庫的cflags與libs的方法詳解
本篇文章是對在linux中使用c語言查找使用庫的cflags與libs的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05