算法笔记练习 3.1 简单模拟 问题 C: 特殊乘法

算法笔记练习 题解合集

本题链接

题目

题目描述
写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 14 +15 +24 +25 +34+35
输入
两个小于1000000000的数

输出
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。

样例输入

24 65
42 66666
3 67

样例输出

66
180
39

思路

把两个数字各个数位上的数,分别拆分进两个数组,然后用两层循环计算答案。

代码

#include 

int split (int *a, int n) {	//将数字 n 拆分进数组 a,并返回 n 的位数 
	int dig = 0;
	if (n == 0) {
		*a = 0;
		return 1;
	} 
	while (n > 0) {
		*a = n % 10;
		n /= 10;
		++a;
		++dig;
	}
	return dig;
} 

int main() {
	int A, B;
	while ((scanf("%d %d", &A, &B)) != EOF) {
		int a[11] = {0}, b[11] = {0}, sum = 0;
		int da = split(a, A), db = split(b, B);
		for (int i = 0; i < da; ++i)
			for (int j = 0; j < db; ++j)
				sum += a[i] * b[j];
		printf("%d\n", sum);
	} 
	return 0;
} 

你可能感兴趣的:(算法笔记)