大数相乘
2015-08-09 10:40
218 查看
// bigNumAdd.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdio.h> #include <string.h> #define MAX 101 int bigNumMulti(char a[],char b[],char result[]); void print(char sum[],int lenResult); int main(int argc, char* argv[]) { char a[MAX]; char b[MAX]; char multiResult[2*MAX]; gets(a); gets(b); print(multiResult,bigNumMulti(a,b,multiResult)); return 0; } int bigNumMulti(char a[],char b[],char result[]) { int i; int j; int temp1; int temp2; int multiFlag; int addFlag; int lenA=strlen(a); int lenB=strlen(b); char m[MAX]={0}; char n[MAX]={0}; memset(result,0,2*MAX*sizeof(char)); for(i=0;i<lenA;i++) { m[i]=a[lenA-i-1]-'0'; } for(i=0;i<lenB;i++) { n[i]=b[lenB-i-1]-'0'; } for(i=0;i<lenB;i++) { multiFlag=0; addFlag=0; for(j=0;j<lenA;j++) { temp1=m[j]*n[i]+multiFlag; multiFlag=temp1/10; temp1=temp1%10; temp2=result[i+j]+temp1+addFlag; addFlag=temp2/10; result[i+j]=temp2%10; } result[i+lenA]+=multiFlag+addFlag; } return lenA+lenB; } void print(char sum[],int lenResult) { int i=0; int j=0; for(i=lenResult-1;sum[i]==0;i--); if(i>=0) { for(j=i;j>=0;j--) { printf("%c",sum[j]+'0'); } }else{ printf("0"); } }
相关文章推荐
- MyBatis Generator generatorConfig.xml配置详解
- UILable
- [leetcode] N-Queens
- HDU 1200 To and Fro
- 大数相加
- OpenCV——径向模糊
- JdbcTemplate的使用
- Mac工作环境配置笔记
- Java读取文件MD5的两种方案
- 【JCC技术】JCC功能演示
- 约瑟夫环 不同密码
- uvalive 2191(BIT)
- java中图的两种存储方式
- hdu 5364 Distribution money
- linux下php代码不执行、不解析问题
- android组件间共享数据的常用方法
- hdu 5364 Distribution money
- 字符串计数
- leetcode 2 Add Two Numbers
- 求Sn=1!+2!+3!+4!+5!+…+n!