算法笔记练习 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 <cstdio>

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;
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值