《算法竞赛入门经典》练习题:
编程过程中考虑个位、十位...表达问题
C++:
#include<stdio.h> #include<iostream> #include<math.h> using namespace std; int main() { int a, b, c; for (int i = 150; i <= 999; i++) { a = i / 100; //百位数 b = (i - a * 100) / 10; //十位数 c = i - a * 100 - b * 10;//个位数 if (i == a*a*a + b*b*b + c*c*c) //if(i==pow((float)a,3)+pow((float)b,3)+pow((float)c,3)) { cout <<i<< "是水仙花数"<<endl; } } return 0; }
Python:
输出N位的水仙花问题:
def f(n): """ :param n: 输出n 位的水仙花 :return: """ list = [] for i in range(pow(10, n-1), pow(10, n)): list = map(int, str(i)) sum = 0 for j in range(0, len(list)): sum = sum + pow(list[j], n) if sum == i: print i if __name__ == "__main__": n = int(raw_input("input n:")) f(n)
多级水仙花问题优化: