NYoj 121 另类乘法

来源:互联网 发布:js 文本框数值相加 编辑:程序博客网 时间:2024/05/16 07:05

另类乘法
时间限制: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);    }}