洛谷P1618 三连击(升级版)C语言 暴力枚举 详解
题目描述
将 1, 2,\ldots, 91,2,…,9 共 99 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:CA:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!
。
//感谢黄小U饮品完善题意
输入格式
三个数,A,B,CA,B,C。
输出格式
若干行,每行 33 个数字。按照每行第一个数字升序排列。
输入输出样例
输入 #1复制
1 2 3
输出 #1复制
192 384 576 219 438 657 273 546 819 327 654 981
说明/提示
保证 A<B<C。
思路简洁:
可以通过枚举第一个数字,通过确定的比例算出另外两个数字(不一定是存在的),通过检查和判断,筛选出符合要求的答案。这样便极大的降低算法的复杂度。
#include<stdio.h>
#include<stdlib.h>
int s[10];
void go(int x) {//利用数组的下标自然有序将三组数字的每一位数对应的下标的值赋值为1s[x % 10] = 1;s[x / 10 % 10] = 1;s[x / 100 % 10] = 1;
}
int check(int a,int b,int c){//check函数用来检查三组数字是否满足需求memset(s, 0, sizeof(s));//清0数组if (b > 999 || c > 999)return 0;//显然b和c可能不是三位数,此种情况直接return 0go(a), go(b), go(c);for (int i = 1; i <= 9; i++) {//下标从1到9遍历,如果三组数字满足每一位数各不相同最终便会结束循环return 1 否则return 0if (!s[i])return 0;}return 1;}
int main(){long a, b, c, i,t1,t2; int cnt = 0;scanf("%ld %ld %ld", &a, &b, &c);//录入比例for (i = 123; i <= 987; i++) {//只枚举一个数,借此数和比例暂时求出另外两个数字(可能不存在)//因为要求每组三位数数字的每一位数字都不同,此数的范围显然是123-987if (i * b % a || i * c % a)continue;// 如果i*b%a或者i*c%a不为0,即除不断,那么由i*b/a算出来的数显然是不符合要求饿t1 = i * b / a;t2 = i * c / a;if (check(i, t1, t2)) {printf("%ld %d %d\n", i, t1, t2); cnt++;}}if (!cnt)printf("No!!!");return 0;
}
洛谷P1618 三连击(升级版)C语言 暴力枚举 详解相关推荐
- 洛谷[P3799 妖梦拼木棒] {暴力枚举} 奋斗的珂珂~
洛谷[P3799 妖梦拼木棒] {暴力枚举} 题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 n 根木棒,现在从中选 4 根,想要组成一个正三角形,问有几种选法? 答案 ...
- 洛谷-P1618 三连击(升级版)
题目描述 将1,2,-,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出"No!!!". 输入格式 三个数, ...
- 洛谷P1618 三连击(升级版)
1.首战自己写:(巨蠢)80分 #include<iostream> using namespace std; int tc[10000][3], A_[10000], B_[10000] ...
- 洛谷 P1618 三连击(升级版)
题目描述 将 1,2,-,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!. //感谢黄小U饮品完善题意 输 ...
- 洛谷p1618 三连击(升级版)(python)
题目:用1-9组成三个数字各不重复的三位数,使这三个三位数满足一定的比例关系,算出所有解.若无解,输出"No!!!" 这道题当时想了好久,以下我觉得很好的一个思路是一位朋友给我的. ...
- 洛谷题目[NOIP2016 提高组]P1563 玩具谜题 详解<每日一题>
题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singersi ...
- 洛谷:P1042 [NOIP2003 普及组] 乒乓球 C++详解
题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中 11 分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华就是其中一位,他 ...
- 洛谷 P1618 STL全排列方法
洛谷 P1618 & STL全排列方法 今天在做洛谷上暴力专项训练,在解P1618题目的过程中发现了STL中全排列在解题中的妙用,特在此分享. 首先让我们先来看一下这道题: P1618三连击( ...
- (转)C语言位运算详解
地址:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html C语言位运算详解 作者:911 说明:本文参考了http://www2.ts ...
最新文章
- 去除网页上图片的虚框和a文字链接上的虚框
- ajax响应码,jQuery 使用$ .ajax()处理HTTP响应代码
- 如何下载B站视频到本地?
- sqlserver2005查询表字典
- 下载Linux系统内文件到Windows
- 单纯形法算法实现--java版
- Flume-----八种采集方案
- sudo,普通用户的提权操作,越权跟踪
- 【git】出现Merge Conflict,解冲突
- 12弦电吉他音源 Orange Tree Samples Evolution Rick 12 Kontakt
- 三国演义告诉你的60条真理
- 人生七工具:SWOT、PDCA、6W2H、SMART、WBS、时间管理、OKR
- java读取二进制流文件_java分别通过字节流、字符流、二进制读取文件的代码
- am335x+wm8960音频基于linux 4.9.41移植
- RIGOL示波器测试特殊功能
- uiautomator2 半自动发布视频脚本
- dell 1464 升级固态硬盘ssd 记录
- Redis的Multi的内幕真相
- Bmob小程序模板消息
- 安全修复之Web——HTTP X-XSS-Protection缺失