NYoj 121 另类乘法

本文介绍了一种名为“另类乘法”的算法,该算法由Bessie发明,用于计算两个整数间所有可能的数位两两相乘之和。通过分析问题并给出具体的代码实现,展示了如何高效地解决这一数学问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

另类乘法
时间限制:3000 ms | 内存限制:65535 KB
难度:1
描述
Bessie is tired of multiplying pairs of numbers the usual way, so she invented her own style of multiplication. In her style, A*B is equal to the sum of all possible pairwise products between the digits of A and B. For example, the product 123*45 is equal to 1*4 + 1*5 + 2*4 + 2*5 + 3*4 + 3*5 = 54. Given two integers A and B (1 ≤ A, B ≤ 1,000,000,000), determine A*B in Bessie’s style of multiplication.

输入
The first Line of the input is a positive integer T,indicates the number of the test cases;
In every case,the input is in one line,contains two positive interger A,B
输出
For every case,output the multiplication in Bessie’s style.
样例输入
1
123 45
样例输出
54

字符串的都发,这个不例外。

#include"cstdio"
#include"cstring"
#include"cmath"
#include"algorithm"
#include"cstdlib"
using namespace std;  
bool cmp(int a,int b)
{
    return a<b;
}
char a[15];
char b[15];
char c[15];
int main ()
{
    int t;
    int i, j, k, n, m, x, y;
    scanf("%d",&t);
    while(t--)
    {
        int sum=0;
        scanf("%s %s",a,b);
        int lena=strlen(a);
        int lenb=strlen(b);
        for(i=0;i<lena;i++)
        {
            for(j=0;j<lenb;j++)
            {
                sum=sum+(a[i]-'0')*(b[j]-'0');
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}

这次我和全场最佳思路差不多。都是硬算。他用的指针。如下;


#include<stdio.h>
char A[20],B[20];
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
    int sum=0;
    scanf("%s%s",A,B);
    for(char* p=A;*p;p++)
        for(char* q=B;*q;q++)
            sum+=(*p-'0')*(*q-'0');
    printf("%d\n",sum);
    }
}        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值