喵喵张静,安工吧,艶母6集
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是a:b:c,试求出所有满足条件的三个三位数,若无解,输出“no!!!”。
三个数,a b c。
若干行,每行3个数字。按照每行第一个数字升序排列。
输入 #1
1 2 3
输出 #1
192 384 576 219 438 657 273 546 819 327 654 981
保证a<b<c
题目要求就是在1~9九个数中三个数为一组排列,组成三个三位数,并且需要满足 a:b:c 的比例。
因为这三个数不能重复选,所以可以得到最小的一个三位数为123。所以就可以从123开始暴力求解了,有两个小细节如下:
#include<iostream> #include<algorithm> using namespace std; int main() { int q,b,c,sum=0,temp; cin >> q >> b >> c; for(int i=123;i<999;i++) { int a[10]={0},s=0; if(i/q*c>999) break; if(i%q!=0) continue; temp = i;//第一个数判断开始; for(int n=0;n<3;n++) { if(temp%10==0||a[temp%10]==1) { s=1; break; } a[temp%10]=1; temp = temp / 10; } if(s==1) continue; int j=i/q*b; temp = j;//第二个数判断开始; for(int n=0;n<3;n++) { if(a[temp%10]==0&&temp%10!=0) a[temp%10]=1; else { s=1; break; } temp = temp/10; } if(s==1) continue; int k=i/q*c; temp = k;//第三个数判断开始; for(int n=0;n<3;n++) { if(a[temp%10]==0 && temp%10!=0) a[temp%10]=1; else { s=1; break; } temp = temp/10; } if(s==1) continue; else { cout << i << " " << j << " " << k <<endl; sum++; } } if(sum==0) { cout << "no!!!" <<endl; } return 0; }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论