平衡数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_30440627/article/details/65448970

平衡数的定义:将一个数分成左右两部分,分别成为2个新数。左右不分必须满足:

1、左边和右边至少存在一位

2、左边数的每一位相乘如果等于右边数每一位相乘

则这个数称为平衡数。

如:1221这个数,分成12和21,1*2 = 2*1,是个平衡数。

1236这个数,分成123和6,1*2*3 = 6,是个平衡数。


输入:一个正整数(int范围)

输出:如果是平衡数输出“YES”,否则输出“NO”。



  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. bool isBalance(int n){
  5. if(n < 10){
  6. return false;
  7. }
  8. int count = 0;
  9. int temp = n; //计算位数
  10. while(temp != 0){
  11. temp/=10;
  12. count++;
  13. }
  14. vector<int> ret; //由低位到高位放入容器内
  15. while(n != 0){
  16. ret.push_back(n%10);
  17. n/=10;
  18. }
  19. int flag = false;
  20. int mult1 = 1;
  21. for(int i=0; i<count-1; i++){ //循环相乘判断是否相等
  22. mult1 *= ret[i]; //右边相乘结果
  23. int mult2 = 1;
  24. for(int j=i+1; j<count; j++){
  25. mult2 *= ret[j]; //左边相乘结果
  26. }
  27. if(mult1 == mult2){
  28. flag = true;
  29. break;
  30. }
  31. }
  32. if(flag){
  33. return true;
  34. }
  35. else{
  36. return false;
  37. }
  38. }
  39. int main(){
  40. int input;
  41. cin >> input;
  42. if(isBalance(input)){
  43. cout << "YES";
  44. }
  45. else{
  46. cout << "NO";
  47. }
  48. return 0;
  49. }


无欲则刚 关心则乱
原文地址:https://www.cnblogs.com/xjyxp/p/11447377.html