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

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

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;
}
目录
打赏
0
0
0
0
18
分享
相关文章
|
10月前
|
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-116 最大的算式
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-116 最大的算式
71 0
|
10月前
|
③【Java 组】蓝桥杯省赛真题 [黄金连分数][马虎的算式]持续更新中...
③【Java 组】蓝桥杯省赛真题 [黄金连分数][马虎的算式]持续更新中...
90 0
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
102 0
蓝桥杯:2021省赛 例题:时间显示
蓝桥杯:2021省赛 例题:时间显示
100 0
蓝桥杯:2021省赛 例题:直线
蓝桥杯:2021省赛 例题:直线
68 0
蓝桥杯:递推 例题:数字三角型问题
蓝桥杯:递推 例题:数字三角型问题
98 0
蓝桥杯:2020 国赛 例题:天干地支
蓝桥杯:2020 国赛 例题:天干地支
113 0
蓝桥杯:最大公约数 2020省赛 例题:既约分数
蓝桥杯:最大公约数 2020省赛 例题:既约分数
100 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等