洛谷 P1618 三连击(升级版)
Posted 一蓑烟雨任生平
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P1618 三连击(升级版)相关的知识,希望对你有一定的参考价值。
题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。
//感谢黄小U饮品完善题意
输入输出格式
输入格式:
三个数,A B C。
输出格式:
若干行,每行3个数字。按照每行第一个数字升序排列。
输入输出样例
说明
保证A<B<C
思路:模拟
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int a,b,c,num; int vis[10]; int main(){ scanf("%d%d%d",&a,&b,&c); for(int i=1;i<=9;i++) for(int j=1;j<=9;j++){ if(i==j) continue; for(int k=1;k<=9;k++) if(i!=j&&j!=k&&i!=k){ memset(vis,0,sizeof(vis)); int A=i*100+j*10+k; if(A==176) int hh=0; int B=A*b/a,C=A*c/a; int flag1=0,flag2=0; vis[0]=vis[i]=vis[j]=vis[k]=1; while(B){ if(vis[B%10]){ flag1=1;break; } else vis[B%10]=1; B/=10; } while(C){ if(vis[C%10]){ flag2=1;break; } else vis[C%10]=1; C/=10; } if(!flag1&&!flag2) num++,cout<<A<<" "<<A*b/a<<" "<<A*c/a<<endl; } } if(!num) cout<<"No!!!"; }
以上是关于洛谷 P1618 三连击(升级版)的主要内容,如果未能解决你的问题,请参考以下文章