洛谷P1618 三连击(升级版)
2018-01-03 22:26
495 查看
题目
题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。输入输出格式
输入格式
三个数,A B C。输出格式
若干行,每行3个数字。按照每行第一个数字升序排列。输入输出样例
输入样例
1 2 3输出样例
192 384 576219 438 657
273 546 819
327 654 981
说明
保证A<B<C分析
我的方法是枚举所有的三位数然后挨个试。最暴力做法没有之一的好吧。
满足比例,基数一定是整数。
关键位置(几乎所有位置)全部给出了相关注释。
上代码(码风一如既往)
#include <cstdio> #include <algorithm> #include <cstring> #include <cstdlib> #include <cmath> #include <ctime> #include <iostream> #include <queue> #include <vector> using namespace std; bool used[10]; //检查数字是否齐全的 bool check(int,int,int); //检查函数 bool answer; //标记是否有答案 int main() { int a; int b; int c; //比例 scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); //读入 int a1; int a2; int a3; //那三个数 answer=false; //初始化 for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) for(int k=1;k<=9;k++) { if(i==j||i==k||j==k)//不可以一样(先看省时间,其实省不省一样) continue; a1=i*100+j*10+k;//求出最小的数 int x;//基数 x=a1/a;//求基数 if(a1%x!=0||a!=a1/x)//看看能不能整除,出小数肯定不行啊 continue; a2=x*b;//求第二个 a3=x*c;//求第三个 if(check(a1,a2,a3)==false)//检查结果 continue; printf("%d %d %d\n",a1,a2,a3);//输出 answer=true;//标记 } if(answer==false)//没有 printf("No!!!"); return 0; } bool check(int u,int v,int w) { memset(used,false,sizeof used);//初始化 if(u/1000!=0) return false; if(v/1000!=0) return false; if(w/1000!=0) return false; //超过1000 int i; //这个是看数字的 i=u%10; if(used[i]==true||i==0) return false; used[i]=true; //个位 i=u/10%10; if(used[i]==true||i==0) return false; used[i]=true; //十位 i=u/100; if(used[i]==true||i==0) return false; used[i]=true; //百位 //第一个数 i=v%10; if(used[i]==true||i==0) return false; used[i]=true; //个位 i=v/10%10; if(used[i]==true||i==0) return false; used[i]=true; //十位 i=v/100; if(used[i]==true||i==0) return false; used[i]=true; //百位 //第二个数 i=w%10; if(used[i]==true||i==0) return false; used[i]=true; //个位 i=w/10%10; if(used[i]==true||i==0) return false; used[i]=true; //十位 i=w/100; if(used[i]==true||i==0) return false; used[i]=true; //百位 //第三个数 return true; }可以算个数学题。
相关文章推荐
- luogu【1618】三连击(升级版)
- <NOIP> 27 . P1618 三连击(升级版)
- luogu P1618 三连击(升级版)
- [洛谷1618]三连击(升级版)
- luogu P1618 三连击(升级版)
- 洛谷 1618 三连击升级版输出样例#1: 192 384 576 219 438 657 273 546 819 327 654 981
- 洛谷-三连击(升级版)-BOSS战-入门综合练习1
- 三连击(升级版)
- P1618 三连击(升级版)(#1 - 7)
- P1618 三连击(升级版)
- P1618 三连击(升级版)
- 新手村 Boss战-入门综合练习1 三连击(升级版)
- 洛谷 P1618 三连击(升级版)
- 洛谷P1618 三连击(升级版)
- 洛谷 P1008三连击 & P1618三连击(升级版)
- P1618 三连击(升级版)
- 三连击(升级版)
- 洛谷 P2626 斐波那契数列(升级版)
- 算法爱好者——背包问题升级版 ? 待解决
- Nginx-动态路由升级版