平衡數問題


牛牛在研究他自己獨創的平衡數,平衡數的定義是:將一個數分成左右兩部分,分別成為兩個新的數。
左右部分必須滿足以下兩點:
1,左邊和右邊至少存在一位。
2,左邊的數每一位相乘如果等於右邊的數每一位相乘,則這個數稱為平衡數。
例如:1221這個數,分成12和21的話,1*2=2*1,則稱1221為平衡數,再例如:1236這個數,可以分成123和1*2*3=6,所以1236也是平衡數。而1234無論怎樣分也不滿足平衡數。

注意:測試用例:420306這種含有2個及以上0的數。

 

#include <iostream>
#include <algorithm>
#include "string.h"
#include "stdio.h"
#include <vector>
#include <deque>
#include <stack>
using namespace std;

class Sort {
public:
  bool findcount(vector<int> arr, int n) {
        // write code here
        if(n<2||n>50)
            return false;

        int begin = 0;
        int end = n-1;
        long long res1 = 1;
        long long res2 = 1;
        int count=0;
        for(int i=0;i<n;i++)
        {
           if(arr[i]==0)
               count++;
        }
        if(count>=2)//處理含有多個0的情況
return true;
while(begin<=end) { if(res1<=res2) { res1*=arr[begin]; begin++; } else { res2*=arr[end]; end--; } } if(res1==res2) return true; else return false; } }; int main() { int num; int count = 0; cin>>num; if(num<=10) { cout<<"NO"<<endl; return 0; } vector<int> res; while(num) {   res.push_back(num%10); num/=10; } Sort solution; bool result = solution.findcount(res,res.size()); if(result == 1) cout<<"YES"<<endl; if(result == 0) cout<<"NO"<<endl; return 0; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM