码迷,mamicode.com
首页 > 其他好文 > 详细

数位拆解(王道)

时间:2018-03-14 20:42:44      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:pos   数位   while   using   blog   结果   scan   个数   mem   

题目描述:

写个算法,对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;
}

 

数位拆解(王道)

标签:pos   数位   while   using   blog   结果   scan   个数   mem   

原文地址:https://www.cnblogs.com/xym4869/p/8569677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!