首页 > 试题广场 >

特殊乘法

[编程题]特殊乘法
  • 热度指数:29866 时间限制: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
蛮力法,关键在于用long类型,先求输入的两个的数的长度,然后在再给一个数组保存他们每一位的值,然后直接求对应结果。


import java.util.Scanner;
public  class Main{
    public static int lengthNumber(long number){
        int length=0;
        while(number!=0){
            number=number/10;
            length++;
        }
        return length;
    }
    public static long methon(long number1,long number2){
        int length1=lengthNumber(number1);
        int length2=lengthNumber(number2);
        long []array=new long[length1];
        long []array2=new long [length2];
        int i=0;
        int j=0;
        int sum=0;
        while(number1!=0){
            array[i]=number1%10;
            number1/=10;
            i++;
        }
        while(number2!=0){
            array2[j]=number2%10;
            number2/=10;
            j++;
        }
        for(int k=0;k<length1;k++){
            for(int z=0;z<length2;z++){
                sum+=array[k]*array2[z];
            }
        }
        
        return sum;
    }
    
    public static void main(String []args){
        Scanner scanner=new Scanner(System.in);
        long number1,number2;
        number1=scanner.nextLong();
        number2=scanner.nextLong();
        System.out.println(methon(number1,number2));
    }
}
发表于 2021-03-18 20:28:38 回复(0)
Java解法
import java.util.Scanner;

public class Main02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] s = scanner.nextLine().split(" ");
        char[] x = s[0].toCharArray();
        char[] y = s[1].toCharArray();
        int sum=0;
        for (char x1 : x) {
            for (char y1 : y) {
                sum += (x1-'0') * (y1-'0');
            }
        }
        System.out.println(sum);
    }
}



编辑于 2020-03-06 22:29:55 回复(0)
简单的水题
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        while (reader.hasNext()) {
            int a = reader.nextInt();
            int b = reader.nextInt();
            ArrayList<Integer> arr = new ArrayList<>();
            int sum = 0;
            while (a > 0) {
                arr.add(a%10);
                a = a / 10;
            }
            while (b > 0) {
                for (int i = 0; i < arr.size(); ++i) {
                    sum += (b % 10 * arr.get(i));
                }
                b /= 10;
            }
            System.out.println(sum);
        }
    }
}

发表于 2018-03-27 20:39:31 回复(0)