【题目链接】

洛谷 P1008 [NOIP1998 普及组] 三连击

【题目考点】

1. 枚举

2. 数字拆分

【解题思路】

三个由1~9组成的3位数字,满足1:2:3。那么第一个数字最小为100,最大不会超过333(因为如果第一个数字大于333,那么第三个数字会大于1000,无法构成3位数)
设一个布尔型vis数组,vis[i]表示数字i是否出现过。1~9这9个数字每个数字只能出现一次。
在100~333范围内枚举第一个数字,检查该数字是否可用,步骤如下:

  • 对该数字做数字拆分:

    • 如果发现数字0则说明这个数字不能用。
    • 如果这个数字已经出现过了(vis[i]为真),这个数字也不能用。
    • 如果这个数字没出现过,标记这个数字已出现过。

如果第一个数字符合要求,设第二个数字为第一个数字的2倍,第三个数字为第一个数字的3倍。再分别检查第二、第三数字是否可用。如果都可用,输出一组结果。

【题解代码】

解法1:

#include<bits/stdc++.h>
using namespace std;
bool vis[15];//vis[i]:数字i是否存在
//如果n的各位数字都没有出现过,设vis,返回true。如果有出现过的数字或有0,返回false
bool setVis(int n)
{for(int i = n; i > 0; i /= 10)//数字拆分 {if(i%10 == 0 || vis[i%10])//如果有0,或已出现过的数字 return false;elsevis[i%10] = true;//如果i%10没出现过,则标记其出现过 }return true;
}
int main()
{for(int a = 100; a <= 333; ++a){memset(vis, 0, sizeof(vis));//清空vis数组 if(setVis(a) && setVis(2*a) && setVis(3*a))//如果3个数之中都没有相同的数字 cout << a << ' ' << 2*a << ' ' << 3*a << endl;   }return 0;
}

洛谷 P1008 [NOIP1998 普及组] 三连击相关推荐

  1. 洛谷——P1008 [NOIP1998 普及组] 三连击

    P1008 [NOIP1998 普及组] 三连击 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将 1, 2, \ldots , ...

  2. 洛谷P1008 [NOIP1998 普及组] 三连击题解

    新手必做模拟(还没做的建议自己先做) 题目描述 将 1,2,-,9 共9个数分成3组,分别组成3个三位数,且使这3个三位数构成 1:2:3 的比例,试求出所有满足条件的3个三位数. 本题为提交答案题, ...

  3. 洛谷 - P1008 [NOIP1998 普及组] 三连击 [Java版]

    题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将 1, 2, \ldots , 91,2,-,9 共 99 个数分成 33 组, ...

  4. 信息学奥赛一本通 1208:2的幂次方表示 | OpenJudge 2.2 8758:2的幂次方表示 | 洛谷 P1010 [NOIP1998 普及组] 幂次方

    [题目链接] ybt 1208:2的幂次方表示 OpenJudge 2.2 8758:2的幂次方表示 洛谷 P1010 [NOIP1998 普及组] 幂次方 [题目考点] 1. 递归 [解题思路] 递 ...

  5. 信息学奥赛一本通 1173:阶乘和 | OpenJudge NOI 1.6 15 | 洛谷 P1009 [NOIP1998 普及组] 阶乘之和

    [题目链接] ybt 1173:阶乘和 注:一本通上这题,应该把n≤50n\le50n≤50当做n≤100n\le100n≤100来看 OpenJudge NOI 1.6 15:阶乘和 洛谷 P100 ...

  6. P1008 [NOIP1998 普及组] 三连击 题解

    P1008 [NOIP1998 普及组] 三连击 题解 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将 1, 2, - , 9 ...

  7. 洛谷P1010 [NOIP1998 普及组] 幂次方

    文章目录 前言 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 [数据范围] 代码 解析 结尾 前言 在做完洛谷P1010 [NOIP1998 普及组] 幂次方这道题之后,我 ...

  8. 【洛谷】P1008 [NOIP1998 普及组] 三连击

    [NOIP1998 普及组] 三连击 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将 1,2,-,91, 2, \ldots ...

  9. 洛谷——P1010 [NOIP1998 普及组] 幂次方

    P1010 [NOIP1998 普及组] 幂次方 题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=27+23+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^b ...

最新文章

  1. nessus国内用户不让免费使用了!
  2. mysql 和 sqlserver中备份一张表的区别
  3. Caffe学习系列(4):激活层(Activiation Layers)及参数
  4. exists的用法 python_10 个 Python 开发技巧
  5. 数据库时间字段条件操作善用TO_DAYS函数等
  6. solr后台登录验证
  7. Ubuntu 在终端下使用命令行打开pdf文件
  8. 3D引擎多线程:渲染与逻辑分离
  9. 第一:Python操作MySQL数据库
  10. js访问对方手机文件夹_前端开发——解决vue首次访问太慢的问题
  11. Python数据分析(二):DataFrame基本操作
  12. HttpStatusCode 枚举
  13. java开发简历项目经验,面试必会
  14. 优化算法——差分进化算法(DE)
  15. Excel 宏快捷键删除单元格所在的行
  16. iOS设备 历代 机型对照表
  17. 教你如何谈朋友噢!!!zz
  18. 快递查询单号查询,对物流进行分析
  19. 项目集成腾讯移动直播总结--后端
  20. docker: error pulling image configuration

热门文章

  1. vb.net利用SerialPort进行读取串口操作
  2. (译)如何使用GameCenter制作一个简单的多人游戏教程:第一部分
  3. ubuntu开机时网络图标不见了且不能上网
  4. 2019至今TIOBE编程语言排行榜Top 20,Python完胜C++了吗?
  5. 不会用Photoshop抠图?Python助你一键“除”人!
  6. 电脑键盘练习_三款神器!超越键盘飞毛腿!
  7. 一直认为in,exists 不走索引,被同事鄙视了……
  8. 一口气说出 6种 延时队列的实现方法,面试官也得服
  9. 前几天和前58技术委员会主席聊了聊技术梦想
  10. B站,被扫黄了!B站变P站?