大数乘法(加法)运算
来源:互联网 发布:共享单车大数据 编辑:程序博客网 时间:2024/05/16 18:57
1、直接进行整型大数之间的乘法很容易导致数据存储溢出,可以采用数组存储计算得到的每一位
#include <stdio.h> #include <stdlib.h>int main(){ int n;int a[100], k=0, i, j; //定义相关变量,数组while(1) //自行判断决定循环执行次数{if(n==0)break;printf("请输入要求的阶乘的数、输入0结束:");scanf("%d",&n); //输入阶乘数nprintf(" %d!=",n);for(i=0; i<100; i++) //运用循环语句对数组各元素进行初始化为0a[i]=0;a[0]=1; //对数组首元素初始化为1for(i=2;i<=n;i++){for(j=0;j<=k;j++)a[j]=a[j]*i; //相邻关系的数相乘k=k+2;for(j=0;j<k;j++)if(a[j]>9) //限制范围,以进位为基准{a[j+1]=a[j+1]+a[j]/10; //按阶乘要求改变符合条件的数组元素的值a[j]%=10; //控制a[j]的数值范围,避免过大,影响循环条件语句的再次执行}while(a[k]==0) //判断数组元素是否为0并控制K的范围k--;}for(i=k; i>=0; i--)//利用循环语句,逐个将对应储存阶乘结果的数组元素输出printf("%d",a[i]);printf("\n");}return 0;}
2、大数加法运算,道理是一样的,见下面代码:
#include <stdio.h>#include <iostream.h>#include <string.h>//从s连续相加到n结束void Add(int s,int n){int a[100]; //用数组的每一个元素存放计算结果的每一位memset(a,0,100);int k=0,max=0; //max记录数组a中的有效位for (int i=s;i<=n;i++) //待相加的数值,从s到n{a[0]+=i;k=0; //清零for (int j=0;j<100;j++){while(a[j]>=10){a[j+1]=a[j+1]+a[j]/10; //超过9的需要进位 a[j]=a[j]%10;k++;}}if (k>max) //更新计算结果最大位数{max=k;}}//输出结果for (i=max;i>=0;i--){cout<<a[i];}cout<<endl;}int main(){Add(100,1000);return 0;}
- 大数乘法(加法)运算
- 大数运算(大数加法and大数乘法)
- 大数乘法,加法,除法运算
- 大数运算——加法,减法,乘法
- 大数运算——加法,减法,乘法
- 大数运算——加法,减法,乘法 .
- 大数运算之加法乘法---JAVA实现
- 大数加法 大数乘法
- 大数运算,队列实现大数 加法、乘法、除法、模除
- 【PHP】字符串加法运算(大数加法)
- 单链表实现大数加法、大数减法、大数乘法、大数指数运算
- 大数运算之加法和乘法算法C++模板
- 大数与小数模板(乘法,加法)
- 大数加法和乘法
- 大数加法乘法
- 大数减法、加法、乘法
- 大数加法和乘法
- 大数加法与乘法
- linux-基本命令1
- 并查集专题学习
- 菜鸟学 oracle中的触发器
- VC6.0 将鼠标限定在客户区域内
- 应当怎样合理选择CRM软件
- 大数乘法(加法)运算
- 组合模式使用因素
- How to use C++
- ASP.NET DATAGRIDVIWE控件导出Execle
- 企业ERP选型的三步曲:学医 看病 抓药
- 五大原则加固CRM系统安全系数
- iOS隐藏键盘代码
- KD(kd tree)树介绍
- 用sed清除文本的空行和行首空格