網站首頁 編程語言 正文
前言
水仙花數(Narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, PPDI)或阿姆斯特朗數(Armstrong number),是指一個 3 位數,它的每個位上的數字的 3次冪之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
找出指定范圍內的所有水仙花數需要我們利用循環的相關知識解決,本文將從思路分析入手,帶大家逐步簡化問題,直到代碼實現。
一、思路分析
如果一個數是水仙花數,那么它的每個位上的數字的 3次冪之和等于它本身,因此我們需要分離出它各個位置上的數字,并對他們的三次冪求和,與原數相等即可。
問題就簡化為了分離各個位置上的數,對于百位,我們可以知道,因為數據類型為 int 整型,因此原數除以100即為百位數;對于十位,將原數模100后,除以10即可;對于個位,模10即可獲得。
到此,整體思路已經明確,我們將其轉化為代碼。
二、代碼實現
1.水仙花函數
我們首先來寫一個函數,這個函數的功能是判斷一個數是否為水仙花數,如果是,返回真;否則,返回假。
代碼如下(示例):
/* Alkaid#3529 */ bool narcissus(int a) { int sum = 0; // 記錄最終求和結果 int x1 = a / 100; // 原數除以100即為百位 int x2 = a % 100 / 10; // 原數模100后,除以10就是十位數 int x3 = a % 10; // 模10的結果就是個位數 // 對得到的各位數的三次冪求和 sum = x1 * x1 * x1 + x2 * x2 * x2 + x3 * x3 * x3; // 判斷求和結果與原數是否相等 if (sum == a) return 1; else return 0; }
2.完整代碼
在現有函數基礎上,我們只需對所有三位數循環判斷,若為真,輸出;否則,跳過即可。
代碼如下(示例):
/* Alkaid#3529 */ #include<iostream> using namespace std; bool narcissus(int a); int main() { cout << "水仙花數有: "; // 從100開始,逐個檢查所有三位數 for (int i = 100; i < 1000; i++) { if (narcissus(i)) cout << i << " "; } return 0; } bool narcissus(int a) { int sum = 0; // 記錄最終求和結果 int x1 = a / 100; // 原數除以100即為百位 int x2 = a % 100 / 10; // 原數模100后,除以10就是十位數 int x3 = a % 10; // 模10的結果就是個位數 // 對得到的各位數的三次冪求和 sum = x1 * x1 * x1 + x2 * x2 * x2 + x3 * x3 * x3; // 判斷求和結果與原數是否相等 if (sum == a) return 1; else return 0; }
我們運行一下程序,看看結果如何。
經檢驗,代碼運行無誤,結果正確,可以放心復制粘貼。
總結
水仙花數的判斷是常見的基礎題型,除此之外,后續會陸續推出 C++ 的進階題目,感興趣且想學習的話不妨點點關注,你的點贊是我更新的最大動力哦!
原文鏈接:https://blog.csdn.net/qq_51661256/article/details/122312551
相關推薦
- 2023-01-08 Flutter開發技巧ListView去除水波紋方法示例_Android
- 2022-07-02 Python使用struct庫的用法小結_python
- 2022-11-26 React組件如何優雅地處理異步數據詳解_React
- 2023-10-09 所有的引用類型都有自由可拓展性怎么理解
- 2022-04-01 hive not in效率優化
- 2022-08-03 Python類的基本寫法與注釋風格介紹_python
- 2022-11-19 Python+random模塊實現隨機抽樣_python
- 2022-10-24 解析Golang中引用類型是否進行引用傳遞_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支