Multiply Strings
来源:互联网 发布:一龙 金钟罩 知乎 编辑:程序博客网 时间:2024/05/16 00:45
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
#include<stdio.h>#include<stdlib.h>#include<string.h>char *multiply(char *num1, char *num2) { int i, j, k, n, m; int flag1 = 0, flag2 = 0, data1, data2; for(i = 0; num1[i] != '\0'; i++); n = i; for(j = 0; num2[j] != '\0'; j++); m = j; printf("m:%d, n:%d\n", m, n); char *res = (char *)malloc(sizeof(char) * (m + n)); for(k = 0; k < (m + n); k++) res[k] = '0'; for(j = m - 1; j >= 0; j--) { for(i = n - 1, flag1 = 0, flag2 = 0, k = j + n ; i >= 0; i--) { data1 = (num1[i] - '0') * (num2[j] - '0') + flag1; if(data1 > 9) { flag1= data1 / 10; data1 = data1 % 10; } else flag1 = 0; data2 = (res[k] - '0') + data1 + flag2; if(data2 > 9) { flag2= 1; data2 = data2 % 10; } else flag2 = 0; res[k] = data2 + '0'; k--; } res[k] = flag1 + '0'; k--; } data2 = res[0] - '0' + flag2; res[0] = data2 + '0'; if(res[0] == '0') { for(i = 0; res[i + 1] != '\0'; i++) { res[i] = res[i + 1]; } res[i] = '\0'; } return res; }void main() { char *num1 = "123456789", *num2 = "123456789"; char *data = multiply(num1, num2); printf("%s\n", data);}
0 0
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- Multiply Strings
- windows下的对拍用小玩意
- [leetcode 117] Populating Next Right Pointers in Each Node II
- Linux上编译安装boost
- Java的 字节流 InputStream 类及其子类 FileInputStream 的使用
- 【微机原理】-存储器
- Multiply Strings
- UTC时间与北京时间的差多久
- 三大数据库连接语句
- 图数据库Titan在生产环境中的使用全过程+分析
- Android中原始资源文件使用详解
- DAy8-自动完成输入内容
- Android实战技巧:深入解析AsyncTask
- Ba64 编码处理上传图片的参数失效问题
- Letter Combinations of a Phone Number