第一题感觉也不用这么麻烦,有小技巧~~~....对于123*456,实际上只要数6*123,5*123,4*123,三个结果里面每个字符的数量就好了(再加上ab本身和a*b本身).

package WY;

import java.util.Scanner;

/**
 * 思路:
 *      1. 对两个数字逐位计算,假设要计算 a*b,
 *      则列式为:
 *          a[0] a[1] a[2] .. a[N]
 *        x b[0] b[1] b[2] .. b[N]
 *
 *      结果第一行是b[N]*a[N] , a[N-1] ... a[1],
 *
 *      模拟即可,需要考虑进位.
 *
 *
 */
public class wangyi01 {

    public static void main(String[] args){
        wangyi01 wangyi01 = new wangyi01();
        wangyi01.Input();
    }

    int N;

    // 记录每位的数字出现次数
    int[] count = new int[10];

    public void Input(){
        Scanner in = new Scanner(System.in);
        N = in.nextInt();
        for(int i=0;i<N;i++){
            int a = in.nextInt();
            int b = in.nextInt();

            Slove(a,b);
        }

        int max = 0;
        int maxNumber = 0;
        for(int i=1;i<=9;i++){
            if(count[i]>max){
                max = count[i];
                maxNumber = i;
            }
        }

        System.out.println(maxNumber);
    }

    public void Slove(int a,int b){

        int[] tempCount = new int[10];

        String strb = String.valueOf(b);
        for(int i=0;i<strb.length();i++){
            int num = strb.charAt(i)-'0';

            int result = num * a;
            String strResult = String.valueOf(result);
            for(int j=0;j<strResult.length();j++){
                int number = strResult.charAt(j)-'0';
                count[number]++;
                tempCount[number]++;
            }
        }
        // 计算a*b
        String strResult = String.valueOf(a*b);
        for(int j=0;j<strResult.length();j++){
            int number = strResult.charAt(j)-'0';
            count[number]++;
            tempCount[number]++;
        }
        // 计算a
        strResult = String.valueOf(a);
        for(int j=0;j<strResult.length();j++){
            int number = strResult.charAt(j)-'0';
            count[number]++;
            tempCount[number]++;
        }
        // 计算b
        strResult = String.valueOf(b);
        for(int j=0;j<strResult.length();j++){
            int number = strResult.charAt(j)-'0';
            count[number]++;
            tempCount[number]++;
        }


        System.out.print(tempCount[1]);
        for(int i=2;i<=9;i++){
            System.out.print(" "+tempCount[i]);
        }
        System.out.println();
    }
}