洛谷P1008 三连击
来源:互联网 发布:网络贷款案例 编辑:程序博客网 时间:2024/04/29 02:06
题目背景:
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述:
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。
输入格式:
无输入
输出格式:
若干行,每行3个数字。按照每行第一个数字升序排列。
【暴力枚举】
#include<cstdio>int main(){ for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) for(int k=1;k<=9;k++) for(int a=1;a<=9;a++) for(int b=1;b<=9;b++) for(int c=1;c<=9;c++) for(int d=1;d<=9;d++) for(int e=1;e<=9;e++) for(int f=1;f<=9;f++) { if(i+j+k+a+b+c+d+e+f==45&&i!=j&&j!=k&&k!=a&&a!=b&&b!=c&&c!=d&&d!=e&&e!=f) if(i!=k&&i!=a&&i!=b&&i!=c&&i!=d&&i!=e&&i!=f) if(j!=a&&j!=b&&j!=c&&j!=d&&j!=e&&j!=f) if(k!=b&&k!=c&&k!=d&&k!=e&&k!=f) if(a!=c&&a!=d&&a!=e&&a!=f) if(b!=d&&b!=e&&b!=f) if(c!=e&&c!=f) if(d!=f) if(2*(i*100+j*10+k)==(a*100+b*10+c)&&3*(a*100+b*10+c)==2*(d*100+e*10+f)) printf("%d %d %d\n",(i*100+j*10+k),(a*100+b*10+c),d*100+e*10+f); } }
【简化枚举】
#include<cstdio>int a,b,c,d,e,f,g,h,i,j,k,l,p;int main(){ for(int j=123;j<333;j++) { a=j/100; b=j%100/10; c=j%10; if(a!=b&&b!=c&&c!=d) { d=j*2/100; e=j*2%100/10; f=j*2%10; g=j*3/100; h=j*3%100/10; i=j*3%10; if(a+b+c+d+e+f+g+h+i==45) if(d!=b&&d!=c) if(e!=a&&e!=c) if(f!=a&&f!=b) if(g!=b&&g!=c) if(h!=a&&h!=c) if(i!=a&&i!=b) if(g!=e&&g!=f) if(h!=d&&h!=f) if(i!=d&&i!=f) printf("%d %d %d\n",j,j*2,j*3); } } return 0;}
【STL库函数 全排列函数枚举】
#include <iostream>#include <algorithm>#include <cstdio>using namespace std;int f[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };bool Check(){ int a, b, c; a = f[1] * 100 + f[2] * 10 + f[3]; b = f[4] * 100 + f[5] * 10 + f[6]; c = f[7] * 100 + f[8] * 10 + f[9]; if ( a * 2 == b && a * 3 == c ) return true; else return false;}int main(){ while ( next_permutation ( f+1, f+10 ) ){ if ( Check() ) printf ( "%d%d%d %d%d%d %d%d%d\n", f[1], f[2], f[3], f[4], f[5], f[6], f[7], f[8], f[9] ); } return 0;}
【枚举+判重】
#include<iostream>#include<algorithm>using namespace std;int i,j,a[15];bool ans;int main(){ for (i=123;i<=329;i++) { a[1]=i%10; a[2]=i%100/10; a[3]=i/100; a[4]=2*i%10; a[5]=2*i%100/10; a[6]=2*i/100; a[7]=3*i%10; a[8]=3*i%100/10; a[9]=3*i/100; sort(a+1,a+10); ans=true; for (j=1;j<=9;j++) if (a[j]!=j) ans=false; if (ans) cout<<i<<" "<<i*2<<" "<<i*3<<endl; } return 0;}
阅读全文
0 0
- 【洛谷】P1008 三连击
- 洛谷P1008 三连击
- 洛谷P1008 三连击
- 洛谷P1008 三连击
- 洛谷 P1008 三连击
- 洛谷 P1008 三连击
- P1008 三连击(洛谷)
- 【模拟】洛谷 P1008 三连击
- 洛谷 P1008三连击 & P1618三连击(升级版)
- luogu【P1008】三连击
- P1008 三连击
- P1008 三连击
- P1008 三连击
- <NOIP> 7 . P1008 三连击
- 三连击
- 三连击
- 洛谷 P1618 三连击(升级版)
- P1008
- 安卓短音频崩溃
- bat前端面试 css篇
- uva11324强连通分量在dag图上的dp
- fishhook 源码分析
- java为什么不支持多继承
- 洛谷P1008 三连击
- javaseday26(gui基本结构 事件监听)
- JAVA-自动装箱和拆箱
- 我的cookie工具类
- Chrome打不开Pycharm运行的web应用
- 深度自编码器原理
- JavaScript面向对象的程序之弹框组件的开发Demo——xyp_hf
- ApplicationContextAware接口方式去获取上下文报NUllPointerException
- ZOJ2334 Monkey King 并查集 STL