蓝桥杯:桶排序 与 例题:算式问题

简介: 蓝桥杯:桶排序 与 例题:算式问题

7737259ffedb48b8910d3db814ae5dab.png

题目描述:


本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。


看这个算式:


☆☆☆ + ☆☆☆ = ☆☆☆


如果每个五角星代表 1 ~ 9 的不同的数字。这个算式有多少种可能的正确填写方法?


173 + 286 = 459 295 + 173 = 468 173 + 295 = 468 183 + 492 = 675


以上都是正确的填写法!


注意:111+222=333 是错误的填写法!因为每个数字必须是不同的!也就是说:1 ~ 9 中的所有数字,每个必须出现且仅出现一次!


注意:不包括数字 “0”。


注意:满足加法交换率的式子算两种不同的答案。 所以答案肯定是个偶数!


运行限制:

1.最大运行时间:1s

2.最大运行内存: 128M

#include <iostream>
#include <map>
using namespace std;
int flag[11];
int check(int a, int b, int c){
  //初始化:
  for(int i = 0; i < 10; i++) flag[i] = 0;
  flag[0] = 1; //关键所在,因为每个数字都不包含0 
  while(a != 0){
    //桶排序判断: 
    if(flag[a % 10] == 1) return 0;
    else flag[a % 10] = 1; 
    if(flag[b % 10] == 1) return 0;
    else flag[b % 10] = 1;
    if(flag[c % 10] == 1) return 0;
    else flag[c % 10] = 1;
    //对每个数字进行判断: 
    a /= 10;
    b /= 10;
    c /= 10; 
  } 
  return 1;
}
int main(){
  int ans = 0;
  for(int a = 123; a <= 987; a++){
    for(int b = 123; b <= 987 - a; b++ ){  
      int c = a + b;
      if(check(a, b, c)){
        ans++;
        cout << a << " +" << b << " = " << c << endl; 
      }
    }
  }
  cout << ans << endl;
  return 0;
}
相关文章
|
4月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-116 最大的算式
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-116 最大的算式
52 0
|
存储 算法
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
69 0
蓝桥杯:递推 例题:数字三角型问题
蓝桥杯:递推 例题:数字三角型问题
49 0
|
移动开发 Shell
蓝桥杯:2020 国赛 例题:天干地支
蓝桥杯:2020 国赛 例题:天干地支
66 0
蓝桥杯:2019 国赛 例题:求值
蓝桥杯:2019 国赛 例题:求值
65 0
蓝桥杯:Map 和 例题:弗里的语言
蓝桥杯:Map 和 例题:弗里的语言
57 0
蓝桥杯:队列 Queue 和 例题: CLZ 的银行
蓝桥杯:队列 Queue 和 例题: CLZ 的银行
57 0
蓝桥杯:vector 与 例题:快递分拣
蓝桥杯:vector 与 例题:快递分拣
69 0
|
机器学习/深度学习
蓝桥杯:栈 和 例题 :小邋遢的衣橱
蓝桥杯:栈 和 例题 :小邋遢的衣橱
121 0
蓝桥杯:2021省赛 例题:直线
蓝桥杯:2021省赛 例题:直线
48 0