Project Euler:Problem 56 Powerful digit sum
来源:互联网 发布:linux hadoop安装 编辑:程序博客网 时间:2024/05/15 04:57
A googol (10100) is a massive number: one followed by one-hundred zeros; 100100 is almost unimaginably large: one followed by two-hundred zeros. Despite their size, the sum of the digits in each number is only 1.
Considering natural numbers of the form, ab, where a, b < 100, what is the maximum digital sum?
大数乘法
基本上就是从前面做过的29题那里copy来的代码
#include <iostream>#include <string>using namespace std;string num2str(int n){string ans = "";while (n){int a = n % 10;char b = a + '0';ans = b + ans;n /= 10;}return ans;}void reverse_data(string &data){char temp = '0';int start = 0;int end = data.size() - 1;while (start < end){temp = data[start];data[start++] = data[end];data[end--] = temp;}}void compute_value(string lhs, string rhs, string &result){reverse_data(lhs);reverse_data(rhs);int i = 0, j = 0, res_i = 0;int tmp_i = 0;int carry = 0;for (i = 0; i != lhs.size(); ++i, ++tmp_i){res_i = tmp_i; //在每次计算时,结果存储的位需要增加 for (j = 0; j != rhs.size(); ++j){carry += (result[res_i] - '0') + (lhs[i] - '0') * (rhs[j] - '0');//此处注意,每次计算并不能保证以前计算结果的进位都消除, 并且以前的计算结果也需考虑。 result[res_i++] = (carry % 10 + '0');carry /= 10;}while (carry)//乘数的一次计算完成,可能存在有的进位没有处理 {result[res_i++] = (carry % 10 + '0');carry /= 10;}}for (int i = result.size() - 1; i >= 0; i--){if (result[i] != '0')break;elseresult.pop_back();}reverse_data(result);}int count_num(string s){int count = 0;for (int i = 0; i < s.length(); i++){count += s[i] - '0';}return count;}int powe(string a, int b){string res = a;for (int ii = 1; ii < b; ii++){string tmp(res.length() + a.length(), '0');compute_value(res, a, tmp);res = tmp;}int count = count_num(res);return count;}int main(){int maxc = 0;for (int a = 1; a < 100; a++){for (int b = 1; b < 100; b++){string s = num2str(a);int ans = powe(s, b);if (ans>maxc)maxc = ans;}}cout << maxc << endl;system("pause");return 0;}
0 0
- Project Euler:Problem 56 Powerful digit sum
- Project Euler:Problem 63 Powerful digit counts
- Project Euler:Problem 16 Power digit sum
- Project Euler:Problem 20 Factorial digit sum
- Project Euler Problem 16 Power digit sum
- Project Euler Problem 20 Factorial digit sum
- Project Euler 题解 #63 Powerful digit counts
- Matlab 编程 Project Euler Problem 20 Factorial digit sum
- Project Euler 16: Power digit sum.
- Project Euler 题解 #16 Power digit sum
- Project Euler 题解 #20 Factorial digit sum
- 16 Power digit sum - Project Euler
- 20 Factorial digit sum - Project Euler
- project euler 16 Power digit sum
- project euler 20 Factorial digit sum
- Project Euler:Problem 30 Digit fifth powers
- Project Euler:Problem 33 Digit cancelling fractions
- Project Euler:Problem 34 Digit factorials
- Redis安装教程
- vector 类型输出的一个问题
- stun技术原理与实现(一)——背景
- 《鸟哥的Linux私房菜》第六章 Linux的文件权限与目录配置
- c语言中的isalpha,isdigit,islower,isupper等一系列函数
- Project Euler:Problem 56 Powerful digit sum
- 每个磁道上的扇区数一样吗?
- 开始玩hadoop13--pig (latin)和Hive
- 导入Android项目出现invalid project description问题
- jdk安装和环境变量的配置
- Sort List
- Linux上安装Apache环境及安装过程报错解决方案(零初始环境)
- TEST_F:多个测试使用同样的配置
- IE8不显示字体图标