美文网首页
[编程题] 平衡数

[编程题] 平衡数

作者: yuanxiaolan | 来源:发表于2017-04-06 14:53 被阅读0次

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

    相关文章

      网友评论

          本文标题:[编程题] 平衡数

          本文链接:https://www.haomeiwen.com/subject/sokqattx.html