Project Euler 题解 #30 Digit fifth powers
来源:互联网 发布:spss 23 mac 许可证 编辑:程序博客网 时间:2024/06/03 18:29
题目:Digit fifth powers
Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits:
1634 = 14 + 64 + 34 + 44
8208 = 84 + 24 + 04 + 84
9474 = 94 + 44 + 74 + 44
As 1 = 14 is not a sum it is not included.
The sum of these numbers is 1634 + 8208 + 9474 = 19316.
Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.
这个问题是求PDI数,即perfect digital invariant,是对求水仙花数的泛化。
数学描述
假设数N = a1a2...an,其中a1 > 0。求满足以下条件的数N:
左边表达式值的范围为:
右边表达式值的范围为:
可得不等式:
则搜索范围缩小为
代码实现
//http://projecteuler.net/problem=30//Digit fifth powers#include "stdafx.h"#include <iostream>#include <vector>#include <cmath>using namespace std;//perfect digital invariant//A PDI is a number equal to the sum of a power of its digits//when the power is not equal to the length of the numberbool IsPDI(unsigned int digit, unsigned int p){unsigned int n = digit, power_sum = 0;do {power_sum += (unsigned int)pow(double(n%10), (int)p);n /= 10;} while (n != 0);return power_sum == digit;}void GetPDI(vector<unsigned int> &vec, unsigned int p){unsigned int limit = (unsigned int)pow((double)9, (int)p) * (p + 1);for (unsigned int i = 2; i < limit; ++i){if (IsPDI(i, p)){vec.push_back(i);}}return;}int _tmain(int argc, _TCHAR* argv[]){vector<unsigned int> vec;GetPDI(vec, 5);unsigned int sum = 0;for (vector<unsigned int>::size_type i = 0; i != vec.size(); ++i){cout<<"["<<i<<"\t] = "<<vec[i]<<endl;sum += vec[i];}cout<<"sum = "<<sum<<endl;system("pause");return 0;}
输入:p=5
输出:
更多参考:
http://web.archive.org/web/20091027123639/http://www.geocities.com//~harveyh/narciss.htm
http://zh.wikipedia.org/wiki/Category:%E6%95%B8%E5%AD%97%E7%9B%B8%E9%97%9C%E7%9A%84%E6%95%B8%E5%88%97
- Project Euler 题解 #30 Digit fifth powers
- Project Euler:Problem 30 Digit fifth powers
- Euler: Digit fifth powers
- [Euler]Problem 30 - Digit fifth powers
- PE 30 Digit fifth powers
- projecteuler---->problem=30----Digit fifth powers
- Problem 30—Digit fifth powers
- Digit fifth powers
- Project Euler 题解 #48 Self Powers
- 欧拉工程第30题:Digit fifth powers
- Problem 30 Digit fifth powers (暴力枚举)
- Project Euler 题解 #16 Power digit sum
- Project Euler 题解 #20 Factorial digit sum
- Project Euler 题解 #63 Powerful digit counts
- Project Euler:Problem 29 Distinct powers
- Project Euler:Problem 48 Self powers
- Project Euler Problem 48: Self powers
- NO_30Digit fifth powers
- linux多线程-哲学家就餐问题
- Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析
- 作为应届生遇到的笔试题
- Windows混音器API使用
- c#动画设计初探 循环切换图片达到动画效果
- Project Euler 题解 #30 Digit fifth powers
- 嗯,我是一个偏执狂。
- iPhone开发资源汇总
- Spring3.2 中 Bean 定义之基于 Annotation 和 Java Code 配置方式的源码解析
- Pro Android学习笔记(三二):Menu(3):Context菜单
- pyqt style sheet的用法,如何取消继承
- http协议(网络转载)
- c++学习论坛推荐
- Root用户使用Xmanager远程桌面连接管理CentOS