牛牛在研究他自己独创的平衡数,平衡数的定义是:将一个数分成左右两部分,分别成为两个新的数。
左右部分必须满足以下两点:
1,左边和右边至少存在一位。
2,左边的数每一位相乘如果等于右边的数每一位相乘,则这个数称为平衡数。
左右部分必须满足以下两点:
1,左边和右边至少存在一位。
2,左边的数每一位相乘如果等于右边的数每一位相乘,则这个数称为平衡数。
例如:1221这个数,分成12和21的话,1*2=2*1,则称1221为平衡数,再例如:1236这个数,可以分成123和1*2*3=6,所以1236也是平衡数。而1234无论怎样分也不满足平衡数。
说明,分两部分分别求解,比较,相等则输出“YES”,没有的话,输出“NO”。
package 模拟二;
import java.util.Scanner;
public class Q2_05_平衡数 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String num = sc.next();//数字以字符串的形式输入的
int n = Integer.parseInt(num);
char[] charss = num.toCharArray();//将字符串转换为字符数组,便于求长度
int[] chars = new int[charss.length];//存放对应的数字的数字数组
for(int i = 0; i<charss.length;i++){
chars[i] = (int)charss[i]-'0';//将字符转为数字
}
//只有一个数字时,输出“NO”
if(chars.length==1){
System.out.println("NO");
return;
}
for(int i=0; i<num.length();i++){
int begin = 1;
int end = 1;
//开始到变量i之间的数字的乘积
for(int j = 0; j<i;j++){
begin *= chars[j];
}
//变量i到结束数字的乘积
for(int k=i;k<num.length();k++){
end*= chars[k];
}
//存在相等的情况输出“YES”,并结束所有判断
if(begin == end){
System.out.println("YES");
return;
}
}
System.out.println("NO");
}
}
}