首页 > 试题广场 >

特殊乘法

[编程题]特殊乘法
  • 热度指数:30113 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
写个算法,对2个小于1000000000的输入,求结果。 特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5

输入描述:
两个小于1000000000的数


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

输入

123 45

输出

54
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    int n,m;
    char a[20];
    char b[20];
    int i,j;
    int sum=0;
    while(scanf("%d %d",&n,&m)!=EOF){
        if(n<1000000000&&m<1000000000){
            sprintf(a,"%d",n);
            sprintf(b,"%d",m);
            int lenx=strlen(a);
            int leny=strlen(b);
            for(i=0;i<lenx;i++){
                for(j=0;j<leny;j++){
                    sum+=(a[i]-'0')*(b[j]-'0');
                }
            }
            printf("%d",sum);    
        }
    }
    return 0; 

编辑于 2024-03-09 21:21:23 回复(0)
#include <stdio.h>

int main() {
    long long int a, b;
    while (scanf("%lld %lld", &a, &b) != EOF) { // 注意 while 处理多个 case
        int i,j,sum=0;
        for(i=a%10;a>0;a/=10,i=a%10){
            int it=b;
            for(j=it%10;it>0;it/=10,j=it%10){
                sum+=i*j;
            }
        }
        printf("%d",sum);
    }
    return 0;
}
发表于 2023-03-08 12:35:04 回复(0)
#include <stdio.h>

int main() {
int n1,m,n2;
scanf("%d %d",&n1,&m);
int i=0,j=0,sum=0;
while(n1){
i=n1%10;
n2=m;
while(n2){
j=n2%10;
sum+=i*j;
n2/=10;
}
n1/=10;
}
printf("%d",sum);
}
发表于 2023-03-05 16:17:44 回复(0)
#include<stdio.h>
#include<string.h>

int main()
{
    char a[10],b[10],s[20],i,j;

	while(gets(s) && strlen(s))
	{
		int num=0;
		sscanf(s,"%s%s",a,b);
		for(i=0;i<strlen(a);i++)
			for(j=0;j<strlen(b);j++)
				num+=(a[i]-'0')*(b[j]-'0');
		
		printf("%d",num);
	}
	return 0;
}

发表于 2022-03-12 15:28:55 回复(0)
暴力求解
#include<stdio.h>
int main()
{
    int i,j,a[10],b[10],sum=0,p=0;
    char n[11],m[11],l,k;
    while(scanf("%s",&n)!=EOF){
       for(i=0;i<11&&n[i]!='\0';i++)
        {
            l=n[i];
            a[i]=p+l-48;
        }
        scanf("%s",&m);
        for(j=0;j<11&&m[j]!='\0';j++)
        {
            k=m[j];
            b[j]=p+k-48;
        }
        for(int x=i-1;x>=0;x--)
        {
            for(int y=j-1;y>=0;y--)
            {
                sum+=a[x]*b[y];
            }
        }
        printf("%d",sum);
    }
    return 0;
}
发表于 2022-03-07 11:39:57 回复(0)
C的代码:用字符数组来表示字符串,strlen来确定他的长度
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
    char a[10],b[10];
    while(scanf("%s %s\n",&a,&b)!=EOF){
        int lena=strlen(a);
        int lenb=strlen(b);
        int sum=0;
        for(int i=0;i<lena;i++){
            for(int j=0;j<lenb;j++){
                sum+=(a[i]-'0')*(b[j]-'0');
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}
C++的时候直接用string来定义,用size来确定大小,都是用[i]来表示某一个字符
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;

int main(){
    string a,b;
    while(cin>>a>>b){
        int sum=0;
        for(int i=0;i<a.size();i++){
            for(int j=0;j<b.size();j++){
                sum+=(a[i]-'0')*(b[j]-'0');
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}



发表于 2022-02-26 13:10:23 回复(0)
#include<stdio.h>
#include<string.h>
int main(){
	char s1[11];
	char s2[11];
	while(scanf("%s %s",s1,s2)!=EOF){
		int sum=0;
		for(int i=0;i<=strlen(s1)-1;i++){
			int temp1=s1[i]-48;
			for(int j=0;j<=strlen(s2)-1;j++){
				int temp2=s2[j]-48;
				sum+=temp1*temp2;
			}
		}
		printf("%d",sum);
		printf("\n");
	}
}

发表于 2022-01-15 11:51:42 回复(0)
#include <stdio.h>

int main(){//矩阵乘法和分配律
    long a,b;
    int sum,c;
    while(scanf("%ld %ld",&a,&b)!=EOF){
        sum=0;
        c=0;
        while(a!=0){
            c=c+a%10;
            a=a/10;
        }
        while(b!=0){
            sum=sum+(b%10)*c;
            b=b/10;
        }
        printf("%d",sum);
    }
}
发表于 2022-01-09 22:04:49 回复(0)
#include<stdio.h>
int main(){
    int a,b,m,n,sum1,sum2;
    while(~scanf("%d %d",&a,&b))
    {
        m=0,n=0,sum1=0,sum2=0;
        while(b>0){
            sum1+=b%10;
            b/=10;
            }
        while(a>0)
        {
            m=a%10;
            a/=10;
            sum2+=m*sum1;
        }printf("%d\n",sum2);
    }
}

发表于 2021-12-26 23:33:39 回复(0)

问题信息

难度:
10条回答 16015浏览

热门推荐

通过挑战的用户

查看代码
特殊乘法