2的N次方求解,一般情况如果不超出C/C++基本数据类型的表达范围,这个问题及其容易,但是如果N的值十分的大,以致于超出基本数据类型表达范围

下面的程序正是解决2的N次方这个大数精确求解的源码

 #include <iostream>
#include <vector>
#include <fstream>
using namespace std; int main()
{
int N = ;//2的N次方是超过基本数据类型所能表达的范围 vector<int> result;//使用vector来保存结果,这里可以使用char来保存
result.push_back();//首先起始为1
vector<int>::iterator it;//定义迭代器 for (int i = ; i <= N; i++)
{
for (it = result.begin(); it != result.end(); it++)//所得每一位*2
{
*it = (*it) * ;
}
for (size_t i = ; i < result.size(); i++)//判断每一位
{
if (result[i] > )//如果该为>=10
{
if (i == result.size() - )//如果是最高位
{
result.push_back(result[i] / );//增加一位
}
else
{
result[i + ] += result[i] / ;//进位
}
result[i] %= ;//进位之后本位处理
}
}
} //写入文件
ofstream out;
out.open("result.txt", ios::out | ios::trunc); if (!out.is_open())
{
cout << "open error";
return -;
}
for (int i = result.size() - ; i > -; i--)//存储和自然读数顺序相反
{
out << result[i];
cout << result[i];
} out.close();
cout << endl; system("pause");
return ;
}

程序运行结果:

2512=13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096

下面是win10计算器计算的结果:

-----------------------------------------------------------------------------------------------------------------------------------------------------------

这个程序只要稍加修改即可变成阶乘大数的求法

 for (it = result.begin(); it != result.end(); it++)//所得每一位*2
{
*it = (*it) * 2;//将2修改为i---->*it = (*it) * i;
}

最新文章

  1. vuex复习方案
  2. 谈谈混合 App Web 资源的打包与增量更新
  3. 安装oracleASM
  4. VS2010/MFC编程入门之四(MFC应用程序框架分析)
  5. 【HDOJ】1114 Piggy-Bank
  6. Mvvm Light Toolkit for WPF/Silverlight系列之搭建mvvmlight开发框架
  7. Ajax 实现无刷新页面
  8. netty源码分析
  9. Sublime Text3使用Package Control 报错There Are No Packages Available For Installation
  10. Redis 基础、高级特性与性能调优
  11. Django _VIEW视图_源码分析
  12. ie 支持字体大小继承
  13. coursera国际法笔记 持续更新
  14. Redis Server installation FAQs
  15. 微信小程序接入百度统计
  16. Mybatis 学习笔记
  17. PHP运行时强制显示出错信息
  18. fieldset、legend、display html元素
  19. Spring MVC基本配置和实践(二)
  20. Linux:命令执行控制&amp;&amp;与||

热门文章

  1. python中的open()函数
  2. 测开之路五十七:实现runner和测试报告
  3. TList TObjectList的区别和使用
  4. hive sql基础了解
  5. vim可视模式
  6. Appium移动端自动化:元素定位uiautomatorviewer
  7. 各种Web服务器与Nginx的对比
  8. Linux中通过grep命令检索文件内容和指定内容前后几行
  9. 回车\r的含义
  10. 不修改源代码,动态注入Java代码的方法(转)