数位拆解(王道)

Posted Shaw_喆宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数位拆解(王道)相关的知识,希望对你有一定的参考价值。

题目描述:

写个算法,对2个小于1000000000的输入,求结果。

特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5

输入:

 两个小于1000000000的数

输出:

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

样例输入:
123 45
样例输出:
54
#include <iostream>
#include<string.h>
using namespace std;

int main()
{
    int a,b;
    cin >> a;
    cin >> b;
    int buf1[20],buf2[20];
    int size1 = 0;
    int size2 = 0;
    memset(buf1,0,sizeof(buf1));
    memset(buf2,0,sizeof(buf2));
    while(a != 0){
        buf1[size1++] = a % 10;//获取各位数组
        a /= 10;//所有数位上的数字移动到上一位
    }
    while(b != 0){
        buf2[size2++] = b % 10;
        b /= 10;
    }
    int ans = 0;
    for(int i=0;i<size1;i++)
        for(int j=0;j<size2;j++)
            ans += buf1[i]*buf2[j];
    cout << ans << endl;

    return 0;
}

 

 当然,还有另一种解法,这种解法就直接把所有的输入作为字符串输入了

#include <iostream>
#include<string.h>
#include<cstdio>
using namespace std;

int main()
{
    char a[20],b[20];
    scanf("%s %s",a,b);
    int ans = 0;
    for(int i=0;a[i]!=0;i++)
        for(int j=0;b[j]!=0;j++)
        ans += (a[i]-0)*(b[j]-0);//记得,如果数字输入为char时,实际计算的时候是要减‘0’的
    printf("%d",ans);
    return 0;
}

 

以上是关于数位拆解(王道)的主要内容,如果未能解决你的问题,请参考以下文章

kotlin-从一个片段更改多个片段的小数位

程序员朋友们,赚钱才是王道!

王道数据结构 (10) 树的先序遍历非递归代码实现

考研王道数据结构-顺序表(综合应用1)

王道数据结构(串4)

王道数据结构(串4)