牛牛在研究他自己独创的平衡数,平衡数的定义是:将一个数分成左右两部分,分别成为两个新的数。
左右部分必须满足以下两点:
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"); } } } }