首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

求三位水仙花數的次大值:C++ 遍歷法實現

     編輯:程式設計綜合問答

問題

找出所有三位水仙花數(各位立方和等於自身),輸出次大值。

水仙花數定義

三位數 abc,若 a³ + b³ + c³ = abc,則為水仙花數。已知共有四個:153、370、371、407。

算法

  1. 遍歷 100~999。
  2. 分解百、十、個位:a = i/100; b = (i/10)%10; c = i%10;。
  3. 判斷立方和是否等於原數。
  4. 維護 max 和 secondMax,最後輸出 secondMax。

代碼

#include <iostream>
using namespace std;

int main() {
    int maxVal = 0, secondMax = 0;
    for (int i = 100; i <= 999; i++) {
        int a = i / 100;
        int b = (i / 10) % 10;
        int c = i % 10;
        if (i == a*a*a + b*b*b + c*c*c) {
            secondMax = maxVal;
            maxVal = i;
        }
    }
    cout << "水仙花的次大值是:" << secondMax << endl;  // 輸出 371
    return 0;
}

結果

水仙花數由小到大:153, 370, 371, 407。次大值為 371。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved