12:计算2的N次方(高精度)

描述

任意给定一个正整数N(N<=100),计算2的n次方的值。

输入

输入一个正整数N。

输出

输出2的N次方的值。

样例输入

5

样例输出

32

提示

高精度计算

思路:用数组进行运算,数组存储最终运算的结果,本题为高精度乘法的简化版本。具体演示过程如下。 

代码:

#include<cstdio>
int a[100000];
int main()
{
	int n=0;
	scanf("%d",&n);
	a[1]=1;
	int k = 1;
	for(int i = 1; i <= n; ++i)
	{
		int x=0;
		for(int j = 1; j  <=k; ++j)
		{
			a[j] = a[j]*2+x;
			x = a[j]/10;
			a[j] = a[j]%10;
			if(x!=0 && j==k) k++;//计算到最高位并且有进位,长度加1 
		}	
	}
	for(int i = k; i >= 1; --i) printf("%d",a[i]); 
	return 0;
} 

 

  • 13
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
落叶高精度表达式计算器V1.0(32位)版 本计算器程序是在win7 32位系统上,使用VB6.0开发的,本程序的主要特点是: 1) 高精度,支持万位精度的有理数常用运算; 包括:加,减,乘,除,乘方,开N次方,三角函数,反三角函数,双曲三角函数,反双曲三角函数等。 2) 表达式运算,本程序没有采用常用计算器的边输入边计算,而是输入完所有数据或算式后,解析表达式,分解运算符和数据,最后在运算出结果。 点击程序界面上的等于按钮,计算器开始运算。 3) 本计算器的各种运算函数大都是自已所写,没有调用大数库或其它数学库,仅大数开平方调用GMP大数库。 本计算器的各种子函数是通过定义的一个高精度数据结构接收和返回运算结果,这个高精度数据结构可以定义有符号(整数,小数,科学计数法表示的数), 函数内部集中对数值,小数点位置,指数进行运算,优点是调用简单,不易出错,可以说比较完善,综合运算能力强。 这点和大数库的实现不同, 大数库大都只提供对整数的运算,假如要对有理数运算, 一:你需要很多的调用前和调用后处理工作,这些工作并不需要很高的知识,但却需要很长时间的调试,它并不会因为你的水平很高而获得很大的时间提升。 二:很难进行综合运算。当你把某一个函数调顺后,进行综合运算时,会出现很多新的问题。 高精度数据结构VB定义为: Type StrToZx '高精度数的结构头 ZhFhBz As Boolean '正负号标志 XsdWz As Long '小数点右边数字的长度。例1234.567中这个数是3(为什么要这样定义,因为大多的基本运算都是右对齐的,这样定义减少了中间一些不必要的转换) JzBz As Integer '标记数组存的是什么进制的数(十进制或其它进制数) strlen As Long '运算数长度 Zx() As Long '存放运算数的数组 eE As Long '存放指数 End Type 4)综合运算,里面的三角函数,用户界面的算式,表达式运算,都是综合运算的体现,综合运算是大量基础运算的集合,中间稍有差错,就会算不出正确答案,里面内容繁琐,这里简单介绍一下。 5)本程序从2015年11月开始试编写,至2016年8月大致完成,开发周期很长,中间代码写了一两万行,从零基础到运行效率,综合效率的初中等水平,主要目的是练习编程,老外的数学软件已很强大,是我不可能相比的,我觉得我的程序如果把程序源码作为大数实例初级学习更合适。 6)程序中函数都具有输入值较验功能,若输入错误,会弹出提示窗口提示那一个函数输入错误。 7)由于本人是初次编程练习,且自身知识的不足,加上精力有限,最后的测试收尾也只是简单测试,里面肯定存在很大的不足和没发现的BUG,请网友们在论坛,或 我的邮箱:wtbzhy@126.com, 微博:qq_34030789,中指正,交流。 我若纠错后,会在下载网站更新,并根据您的地址发一份给您,谢谢! 再次欢迎大家使用本计算器,本计算器具有很好的表达式解析功能,会在以后的使用中获得很好的用户体验!
切比雪夫逼近问题:从一道中国台北数学奥林匹克试题谈起 作者:佩捷,林常 编著 出版时间:2013年版 内容简介   本书从一道中国台北数学奧林匹克试题谈起,详细介绍了切比雪夫逼近问题的相关知识及应用.全书共20章,读者可以较全面地了解这一类问题的实质,并且还可以认识到它在其他学科中的应用。 本书适合数学专业的本科生和研究生以及数学爱好者阅读和收藏。 目录 第0章 引言 第1章 切比雪夫小传 第2章什么是逼近 第3章 切比雪夫多项式 第4章 切比雪夫多项式与方程根的分布 第5章 最佳逼近多项式的特征 第6章 切比雪夫多项式的三角形式在几何中的应用 6.1 第一型切比雪夫多项式 6.2 第二型切比雪夫多项式 第7章 切比雪夫多项式的三角形式不等式 第8章 切比雪夫多项式的拉格朗日形式 第9章 再谈最佳逼近多项式 第10章 最小偏差多项式 第1 1章 高次切比雪夫逼近 11.1 一道集训队试题 11.2 n.几.切比雪夫定理 第12章 切比雪夫多项式与不等式 第13章 切比雪夫多项式与马尔可夫定理 13.1 多项式与三角多项式的导数增长的阶 13.2 函数的可微性质的表征 第14章 多元逼近 第15章 多元逼近问题中的未解决问题 第16章 非线性切比雪夫逼近 第17章 巴拿赫空间中的切比雪夫多项式 第1 8章 FIR数字滤波器设计的切比雪夫逼近法 18.1 切比雪夫最佳一致逼近原理 18.2 利用切比雪夫逼近理论设计FIR数字滤波器 18。3 误差函数置(oJ)的极值特性 第19章 苏格兰咖啡馆的大本子 第20章 逼近论中的伯恩斯坦猜测 20.1 引言 20.2 高精度计算 20.3 计算伯恩斯坦常数卢的上界 20.4 计算伯恩斯坦常数的下界 20,5 ~{2nE一(.zD)]兰,的理查森外插 20.6 某些未解决的问题 20.7 1x0在[一1,+1]上的有理逼近 附录I 关于非线性切比雪夫逼近的几点注记 附录Ⅱ 几个多项式问题 1. 全k次方值蕴涵k次方式 2. 切比雪夫多项式引申出的几个问题 3. 二次函数的几个问题 编辑手记
使用精度库可以实现高精度计算,以下是使用自己实现高精度库的方法: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LEN 2000 //高精度加法 void add(char *a, char *b, char *res) { int la = strlen(a), lb = strlen(b), lc = 0, carry = 0; for (int i = la - 1, j = lb - 1; i >= 0 || j >= 0 || carry; i--, j--) { int da = i >= 0 ? a[i] - '0' : 0; int db = j >= 0 ? b[j] - '0' : 0; int dc = da + db + carry; res[lc++] = dc % 10 + '0'; carry = dc / 10; } res[lc] = '\0'; int lres = strlen(res); for (int i = 0; i < lres / 2; i++) { char tmp = res[i]; res[i] = res[lres - i - 1]; res[lres - i - 1] = tmp; } } //高精度减法 void sub(char *a, char *b, char *res) { int la = strlen(a), lb = strlen(b), lc = 0, borrow = 0; for (int i = la - 1, j = lb - 1; i >= 0 || j >= 0; i--, j--) { int da = i >= 0 ? a[i] - '0' : 0; int db = j >= 0 ? b[j] - '0' : 0; int dc = da - db - borrow; if (dc < 0) { dc += 10; borrow = 1; } else { borrow = 0; } res[lc++] = dc + '0'; } while (lc > 1 && res[lc - 1] == '0') lc--; res[lc] = '\0'; int lres = strlen(res); for (int i = 0; i < lres / 2; i++) { char tmp = res[i]; res[i] = res[lres - i - 1]; res[lres - i - 1] = tmp; } } int main() { int n; scanf("%d", &n); //计算2的n次方 char num[MAX_LEN] = "1"; for (int i = 1; i <= n; i++) { char tmp[MAX_LEN]; mul(num, "2", tmp); strcpy(num, tmp); } //计算2的n次方减2 char sub_num[MAX_LEN]; sub(num, "2", sub_num); printf("%s\n", sub_num); return 0; } ``` 在上面的代码中,使用了两个自己实现的高精度函数:add和sub。其中add函数是实现了高精度加法,sub函数实现了高精度减法。在主函数中,首先读入n,然后计算2的n次方,最后用2的n次方减去2,得到最终结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值