C语言高精度乘法
2018-09-01 05:37:29来源:博客园 阅读 ()
#include <stdio.h> void highPrecision (int N ); int a[50000] = {0, 1}, length = 1; //开辟一个大的数组,全局变量length记录长度 int main() { int N; while( ~scanf("%d", &N) ) { //Ctrl + Z 结束输入 highPrecision(N); } return 0; } void highPrecision (int N) { int cat, mid; //lenth 数据长度, cat 进位, mid 取余 cat = 0; //开始进位为 0 for(int k = 1; k<= length; k++) { mid = a[k] * N + cat; //按位相乘的结果加进位 a[k] = mid % 10; cat = mid / 10; //确定此次计算的进位 if(k == length && cat != 0) //如果当前结果的最高位都需要进位的话,则总长度应增加 length++; } for(int i = length; i>= 1; i--) //把记录的数据按逆顺序打印,且a[0]是多余的,不打印 printf("%d", a[i]); printf("\n"); }
对于C语言来说,int类型的范围是(-2^31 ~ 2^31-1),即便是64位操作系统的长整形long,也只有64位用来存储数据。这样的数据大小,对于简单的乘法足够了,但是对于像50!、100!这样规模甚至更大的阶乘,使用基础数据类型存储显然不够,于是可以考虑使用乘法的位运算结合数组空间实现高精度乘法。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:华为机试 字符串反转
下一篇:口袋的天空
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C语言程序结构 2020-05-31
- 每日干货丨C++语言主流开发工具推荐! 2020-04-28
- C语言实现经典游戏——扫雷! 2020-04-17
- C语言中的宏定义 2020-04-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash