[编程题] 平衡数
2017-04-06 本文已影响0人
yuanxiaolan
牛牛在研究他自己独创的平衡数,平衡数的定义是:将一个数分成左右两部分,分别成为两个新的数。
左右部分必须满足以下两点:
1,左边和右边至少存在一位。
2,左边的数每一位相乘如果等于右边的数每一位相乘,则这个数称为平衡数。
例如:1221这个数,分成12和21的话,12=21,则称1221为平衡数,再例如:1236这个数,可以分成123和123=6,所以1236也是平衡数。而1234无论怎样分也不满足平衡数。
输入描述:
输入一个正整数(int范围内)。
输出描述:
如果该数是平衡数,输出 "YES", 否则输出 "NO"。
输入例子:
1221
1234
输出例子:
YES
NO
import java.util.Scanner;
public class Main {
public static boolean Balance(int n){
String str=String.valueOf(n);
int len=str.length();
int[] a=new int[len];
for(int i=0;i<len;i++){
a[i]=Integer.parseInt(String.valueOf(str.charAt(i)));
}
int count=0;
int begin=0;
int end=len-1;
int result1=1;
int result2=1;
if(n<10)
return false;
for(int c:a){
if(c==0)
count++;
}
if(count>=2)
return true;
if(count==1)
return false;
while(begin<=end){
if(result1<=result2){
result1*=a[begin];
begin++;
}else{
result2*=a[end];
end--;
}
}
if(result1==result2)
return true;
else
return false;
}
public static void main(String arg[]){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
boolean result=Balance(n);
if(result==true)
System.out.println("YES");
else
System.out.println("NO");
}
}