题目描述

把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?
注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和1001+1000+18 被视为同一种。

关键代码:

int j = i + 1
if (k <= j)
continue;

这两个关键代码,导致不会出现重复的情况!!!

法一:
代码如下:

#include <iostream>
#include <sstream>
using namespace std;bool check(int x) {stringstream ss;ss << x;string str;ss >> str;for (int i = 0; i < str.size(); i++) {if (str[i] == '2' || str[i] == '4')return false;}return true;
}int main() {ios::sync_with_stdio(false);cin.tie(0);int ans = 0;for (int i = 1; i * 3 <= 2019; i++)for (int j = i + 1; i + j * 2 <= 2019; j++) {int k = 2019 - i - j;if (k <= j)continue;if (check(j) && check(i) && check(k)) {ans++;}}cout << ans << endl;return 0;
}

法二:

#include <iostream>
using namespace std;
int ans = 0;bool check(int x) {while (x) {int c = x % 10;if (c == 4 || c == 2)return false;x = x / 10;}return true;
}int main() {for (int i = 1; i < 2019; i++)for (int j = i + 1; j < 2019; j++) {int k = 2019 - i - j;if (k <= j)continue;if (check(i) && check(j) && check(k))ans++;}cout << ans << endl;return 0;
}

优化:

#include <iostream>
using namespace std;
int ans = 0;bool check(int x) {while (x) {int c = x % 10;if (c == 4 || c == 2)return false;x = x / 10;}return true;
}int main() {for (int i = 1; i * 3 < 2019; i++)for (int j = i + 1; i + j * 2 < 2019; j++) {int k = 2019 - i - j;if (k <= j)continue;if (check(i) && check(j) && check(k))ans++;}cout << ans << endl;return 0;
}

[蓝桥杯2019初赛]数的分解-枚举相关推荐

  1. [蓝桥杯2019初赛]立方和

    [蓝桥杯2019初赛]立方和 无脑暴力 #include<bits/stdc++.h> using namespace std; typedef long long ll; ll fast ...

  2. 蓝桥杯2019初赛 外卖店优先级 java

    蓝桥杯2019初赛 外卖店优先级 因为疫情的原因,4月份的蓝桥杯推迟到了现在,其实一直以来也没有准备这个比赛,只有一两天时间了,刷几道真题抱一下佛脚. 下面开始说正事: 这道题如果思路不对的话,可能做 ...

  3. 蓝桥杯题目练习 提升篇 [蓝桥杯2019初赛]迷宫

    [蓝桥杯2019初赛]迷宫 题目描述 下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角, ...

  4. [蓝桥杯2019初赛]迷宫-DFS、BFS两种方法

    迷宫问题的最短路,加最小字典序 迷宫文件maze.txt传送门 作者写的2019年B组蓝桥杯解集 . . . DFS的版本 #include<iostream> #include<c ...

  5. [蓝桥杯2019初赛]特别数的和-枚举

    题目描述 小明对数位中含有2.0.1.9 的数字很感兴趣(不包括前导0) 在1到40中这样的数包括1.2.9.10 至32.39 和40,共28 个,他们的和是574. 请问,在1到n 中,所有这样的 ...

  6. [蓝桥杯2016初赛]四平方和-数论+枚举

    题目描述 四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^2 + 2^ ...

  7. [蓝桥杯2018初赛]方格计数-巧妙枚举,找规,数论

    解题思路: 枚举第一象限的所有点,判断是否在圆内,最后结果*4 我们用下面的程序,来算一个半径为2的圆,其实我们第一象限算的就是那个绿点,然后类比到半径5000. 代码如下: #include < ...

  8. [蓝桥杯2019初赛]质数-质数筛or 水题

    法一: 代码如下: #include <iostream> #include <cmath> using namespace std;bool check(int x) {fo ...

  9. [蓝桥杯2019初赛]年号字串-数论+模拟

    题目描述 小明用字母A 对应数字1,B 对应2,以此类推,用Z 对应26.对于27以上的数字 小明用两位或更长位的字符串来对应,例如AA 对应27,AB 对应28,AZ 对应52,LQ 对应329. ...

最新文章

  1. opencv 操作本地摄像头实现录像
  2. [云炬创业基础笔记] 第四章测试4
  3. layout_gravity
  4. 神级代码编辑软件(Sublime Text 3) v3.3114 汉化特别版
  5. linux FTP 批量下载文件
  6. Android:QQ登录页面
  7. C语言如何处理不定长度参数,C语言中不定参数的实现
  8. 阿尔法贝塔阀原理_臭氧投加在污水处理中的应用_美国阿尔法Alpha
  9. java web开发技术文档的编写
  10. 哥斯拉Godzilla shell管理工具
  11. BIG5编码, GB编码(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char 说明与区别
  12. 如何用计算机函数计算房租,Excel商铺租金模板,租金每两年递增5%,具备收租期、租赁起止期、单价函数自动计算功能...
  13. Mirillis Action! v4.17.0 高清游戏视频录制软件
  14. document.getelementbyid是什么意思
  15. 实现antd中Form、Form.Item组件
  16. javaMail(javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection)
  17. Win10 Chromedriver安装教程
  18. unity3d学习笔记-动画(2.控制动画与Animator Controller)
  19. 怎么在服务器里设置账号,云服务器怎么设置账号安全
  20. CSGO 增加机器人数量上限

热门文章

  1. 数据结构之判断一棵树是不是完全二叉树
  2. Android之JNI动态注册native方法和JNI数据简单使用
  3. 《零基础看得懂的C++入门教程 》——(3)表达式花样挺多鸭
  4. C++入门指南及实战 第二步 HelloWorld及扩展详解
  5. mysql之主从复制 简书_MySQL主从复制(传统)
  6. foreach循环符合就不往下走了_柴油发电机组冷却液循环故障解决方法
  7. 光线在传播过程中是否会有变化?可以通过镜子接力的方式抵达目的地吗!?...
  8. 微信又添新功能!这个微信群可以学英语,而且全程免费
  9. Spark ML - 协同过滤
  10. 10玩rust_C++工程师的Rust迁移之路(5)- 继承与组合 - 下