对大数精度的处理(2)_大数乘小数
来源:互联网 发布:戴眼镜软件 编辑:程序博客网 时间:2024/05/08 08:04
程序实现的效果:
输入一个数(10以内),再输入一个大数(位数不限);
输出两者的乘积过程中进位情况,以及乘积结果值。
代码:
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int main(){int m,k,flag;char c[100],t[1000];char s[100];cin>>m;int i,l=0,add=0;scanf("%s",c);l=strlen(c);for(i=0;i<l;i++)//将字符串数组c[],倒序赋值给字符数组s[],因为按照乘法法则,先从个位开始s[l-i-1]=c[i]-'0'; for(i=0;i<l;i++){k = s[i] * m + add;//k等于每一位(先从个位开始,‘个十百千的顺序’)与 m 相乘的结果,add表示进位数。if(k >= 10){s[i] = k % 10;add = k / 10;flag = 1;//flag表示是否有进位(即k是否大于‘10’)的两种情况,等于‘1’,为有,否则,等于‘0’,为无。}else{s[i] = k;flag = 0;add = 0;}cout<<add<<endl;}if(flag){//根据flag的取值判断,长度 l,是否增加‘1’.从而判断s[i]的值,是否为add;l = i + 1 ;s[i] = add ;}elsel=i;for(i=0;i<l;i++){//把字符数组s[],倒序赋值给字符数组t[],就可以把结果正序输出。t[l-i-1] = s[i] + '0';t[l] = '\0';}for(i=0;i<l;i++) cout<<t[i];cout<<endl;return 0;}输入输出样例:
5
123456
3
2
2
1
1
0
617280
Press any key to continue
0 0
- 对大数精度的处理(2)_大数乘小数
- 对大数精度的处理(3)_大数乘大数
- 对大数精度的处理(1)_大数阶乘
- 对大数的精度处理(4)_两大数相加
- 精度计算-大数乘小数
- 精度计算:(二) 大数乘小数
- 精度计算-大数乘大数
- 大数乘小数
- 大数乘小数
- C语言精度计算——大数乘小数
- 精度计算——乘法(大数乘小数)
- HDU1133 大数乘小数 大数除小数
- Andy的作业--大数乘小数
- 大数模板(大数乘小数)
- 大数乘小数核心代码
- 高精度之大数乘小数
- (大数乘小数、大数加小数、大数相乘、大数阶乘、大数进制转换)
- ZOJ 3167(大数乘小数的简单应用)
- android4.2.2及以上webview调用java本地方法不执行解决办法
- Eclipse运行Hadoop
- FFmpeg压缩MP4视频
- 【每日一C之十一】C语言volatile
- 487-3279
- 对大数精度的处理(2)_大数乘小数
- 【经典排序算法】八大排序对比总结
- 用PULL解析器解析XML文件
- 数据结构之 栈
- WinJS 初体验
- java数据集合Map接口
- 使用achartengine实现自定义折线图 -附代码 调试OK
- Eclipse的优化
- 登录oracle 的web database control要求验证主机身份