牛牛在研究他自己独创的平衡数,平衡数的定义是:将一个数分成左右两部分,分别成为两个新的数。
  左右部分必须满足以下两点:
  1,左边和右边至少存在一位。
  2,左边的数每一位相乘如果等于右边的数每一位相乘,则这个数称为平衡数。
  例如:1221这个数,分成12和21的话,1*2=2*1,则称1221为平衡数,再例如:1236这个数,可以分成123和1*2*3=6,所以1236也是平衡数。而1234无论怎样分也不满足平衡数。
                                        
                                            输入一个正整数(int范围内)。
如果该数是平衡数,输出 "YES", 否则输出 "NO"。
1221 1234
YES NO
public class Main {
    public static void main(String[] args) {
        java.util.Scanner in = new java.util.Scanner(System.in);
        String str = in.nextLine();
        if (str == null || str.length() == 0) {
            System.out.println("请输入参数");
            return;
        }
        System.out.println(isBalance(str) ? "YES" : "NO");
    }
    private static boolean isBalance(String num) {
        if (num.length() < 2) {
            return false;
        }
        //检测0,如果一个0,为false;如果多个0,为true
        int firstZero = num.indexOf('0');
        if (firstZero > -1) {
            int lastZero = num.lastIndexOf('0');
            if (firstZero == lastZero) {
                return false;
            } else {
                return true;
            }
        }
        //左右两边计算乘积,值小的一方移位
        char[] arr = num.toCharArray();
        int left = 0, right = arr.length - 1, leftv = arr[left] - 48, rightv = arr[right] - 48;
        while (left < right - 1) {
            if (leftv <= rightv) {
                leftv *= arr[++left] - 48;
            } else {
                rightv *= arr[--right] - 48;
            }
        }
        return leftv == rightv;
    }
}
                                                                                    import java.util.Scanner;
public class Main{
public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    while(sc.hasNext()){
    int n =sc.nextInt();
    String str= String.valueOf(n);
    String left ="";
    String right ="";
    boolean flag = false;
    for(int i=1;i<str.length();i++){
    left=str.substring(0,i);
    right=str.substring(i,str.length());
    if(check(left,right)){
    flag=true;
    }
    }
    if(flag){
    System.out.println("YES");
    }
    else{
    System.out.println("NO");
    }
    }
 }
private static boolean check(String left, String right) {
char [] arr1 = left.toCharArray();
char [] arr2 = right.toCharArray();
int sum1=1,sum2=1;
for(int i=0;i<arr1.length;i++){
sum1*=Integer.valueOf(arr1[i]+"".toString());
}
for(int i=0;i<arr2.length;i++){
sum2*=Integer.valueOf(arr2[i]+"".toString());
}
// System.out.println(sum1);
// System.out.println(sum2);
if(sum1==sum2){
return true;
}
else{
return false;
}
}
}
import java.util.Scanner;
import java.lang.*;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int number;				
		int r1;
		int r2;
		while(in.hasNext())
		{
			boolean PHS = false;
			number = in.nextInt();
			String str = String.valueOf(number);
			if (number>=10)
			{
				for (int i = 0; i<str.length()-1; i++)
				{
					r1 = 1;
					r2 = 1;
					for (int j = 0; j<=i;j++)
					{
						String perstr1 = str.substring(j,j+1);
						int num1 = Integer.parseInt(perstr1);
						r1 = r1 * num1;
					}
					for (int k = i+1;k<str.length();k++)
					{
						String perstr2 = str.substring(k,k+1);
						int num2 = Integer.parseInt(perstr2);
						r2 = r2 * num2;
					}
					if (r1 == r2)
					{
						PHS = true;
						break;
					}
				}
				if (PHS)
				{
					System.out.println("YES");
				}
				else
				{
					System.out.println("NO");
				}
			}
			else
			{
				System.out.println("NO");
			}
		}		
	}
}