[编程题] 平衡数

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");
    }
}
上一篇下一篇

猜你喜欢

热点阅读