描述

将1,2,⋯,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例。

试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576满足以上条件。

格式

输入格式

无输入。

输出格式

需要输出全部结果。每行输出3个数 用空格隔开。按照字典序的顺序输出。

来源

NOIP 1998 普及组 第一题

问题链接: Vijos P1772 巧妙填数

问题分析

这个问题是一个计算问题。

由1-9数字构成的3位数最小值是123,最大值是987。所以3个数中最小那个数的最大值小于或等于987/3=329,也就是说满足条件的3个数中,最小那个数值的范围是123-329。

这样,第1个数a就可以在123-329范围试探。另外两个数就应该是a*2和a*3。只要这3个数中不包含0,并且数字不重复,那么就是合适的解。

另外一种做法是利用置换函数来实现,其第1个数的值范围也是123-329,程序显得比较简洁。

程序说明

函数legalcheck()的功能是判断数的数字是否出现重复。

给出两种不同实现方法的程序,可以比较着看。

题记

进制是计算中绕不开的话题。

参考链接:(略)

AC的C++程序如下:

#include <iostream>
#include <cstring>using namespace std;const int BASE10 = 10;
const int N = 10;
int digit[N];bool legalcheck(int v)
{bool flag;flag = true;while(v) {int d = v % BASE10;if(d == 0 || digit[d]) {flag = false;break;}digit[d] = 1;v /= BASE10;}return flag;
}int main()
{for(int a=123; a<=329; a++) {memset(digit, 0, sizeof(digit));if(!legalcheck(a))continue;if(!legalcheck(a * 2))continue;if(!legalcheck(a * 3))continue;cout << a << " " << a * 2 << " " << a * 3 << endl;}return 0;
}

AC的C++程序如下:

#include <iostream>
#include <algorithm>using namespace std;const int N = 9;int v[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};int main()
{int a, b, c;a = v[0] * 100 + v[1] * 10 + v[2];for(;;) {b = v[3] * 100 + v[4] * 10 + v[5];if(a * 2 == b) {c = v[6] * 100 + v[7] * 10 + v[8];if(a * 3 == c)cout << a << " " << b << " " << c << endl;}next_permutation(v, v + N);a = v[0] * 100 + v[1] * 10 + v[2];if(a > 329)break;}return 0;
}

Vijos P1772 巧妙填数【进制+置换】相关推荐

  1. Vijos P1756 数字反转【进制】

    背景 noip2011 NO.1 描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). ...

  2. Vijos P1784 数字统计【进制】

    背景 来自 NOIP2010 普及组 第一题 描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数. 比如在给定范围[2, 22],数字2在数2中出现了1次,在数12中出现了1次,在数2 ...

  3. C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换

    描述 我们都知道Excel的列数是用字母表示的,比如第1列对应A,第27列对应AA. 假设给定一个正整数n,你能给出它所对应的字母表示么? 输入格式 程序需要读入多个测试样例,每个测试样例中: 一个正 ...

  4. PAT练习 进制回文数(进制问题+字符串处理)

    题目描述: 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开 ...

  5. HDOJ(HDU) 2502 月之数(进制)

    Problem Description 当寒月还在读大一的时候,他在一本武林秘籍中(据后来考证,估计是计算机基础,狂汗-ing),发现了神奇的二进制数. 如果一个正整数m表示成二进制,它的位数为n(不 ...

  6. JSK-23223 数字反转【进制】

    数字反转 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形 式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入格式 输入共 1 行,一 ...

  7. 探索C/C++ 进制转换之美:从原理到应用

    一.简介 (Introduction) 进制 前缀表示 整数常量示例 转换库接口 参数及返回值示例 二进制 0b 或 0B 0b1010 std::bitset<> std::bitset ...

  8. 计算机编码二进制0001,二进制学习01(二进制,进制运算,数据宽度,无符号位有符号位编码规则)...

    二进制学习01 进制 一.二进制简介 1)什么是二进制? 2)二进制的简写形式 二.进制运算 1)八进制运算表 (1) 加法运算表 (2)乘法运算表 (3)八进制简单运算题 三.数据宽度 1)什么是数 ...

  9. 【数字电路基础】进制转换:二进制、十进制、八进制、十六进制、反码、补码、原码

    文章目录 一.无符号数进制转换 1.1.十进制转二.八.十六 1.1.1. 十进制转二进制 1.1.2. 十进制转八进制 1.1.2. 十进制转十六进制 1.2.二.八.十六转十进制 1.3 二进制转 ...

最新文章

  1. Delphi-网络编程-UDP聊天程序(转)
  2. lua学习笔记之语句
  3. web前端数组塌陷的解决办法
  4. ebay php 商品添加多运输,eBay如何设置物流方式
  5. 『设计模式』撩妹秘籍竟是使用设计模式的抽象工厂模式
  6. linux rsa登录改密码登录_linux服务器secureCRT RSA登录配置
  7. 3+1保障:高可用系统稳定性是如何炼成的?
  8. MeiZu Primary
  9. 数据科学和人工智能技术笔记 五、文本预处理
  10. 【POJ3349】Snowflake Snow Snowflakes(哈希表判重,维护一个集合)
  11. 系统架构设计理论与原则、负载均衡及高可用系统设计速记
  12. 旅游景点网站景区景点购票系统毕业设计毕业论文参考(1)功能概要
  13. vs2010 添加nupkg文件
  14. ibm服务器安装ghostxp系统,IBM ThinkPad X61s安装WIN XP系统
  15. 【数据结构】【范浩强treap】
  16. c语言转换说明符总结(%d,%i,%u,%f,%o,%x,%X,%p,%s,%g,%e)
  17. Disconnected: No supported authentication methods available(server sent: publickey) 的解决办法
  18. Maven导入依赖时显示Duplicated tag: ‘dependencies‘ (position: START_TAG seen ...</properties>\r\n\r\n <depen
  19. blacklist regions:NGS测序数据中的黑名单
  20. 选择偏好(Selectional Preference)概念解释及其相关研究

热门文章

  1. sde执行revoke SELECT ANY TABLE from sde导致报ora-29900 运算符连接不存在错误
  2. 移动端前端UI框架推荐
  3. 摆脱臃肿--Unity3D安卓包减肥秘笈
  4. Wamp环境下集成【禅道】管理软件
  5. 在Visual C#中用ListView显示数据记录
  6. c#制作的简单的画图板
  7. pycharm python3.7环境_Python3+Pycharm+PyQt5环境搭建步骤图文详解
  8. knife4j--api请求参数不一致问题
  9. Spring动态代理机制理解
  10. 惠斯通电桥信号调理芯片_变频器通电后无反应,如何检查维修?