洛谷P1478 陶陶摘苹果(升级版)
一只鶸的刷题记录
题目描述
将 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
开始的时候想到P1008的题解第一篇的方法,只改了一下输入部分,然而最后一个样例死活过不了,下载了数据以后发现是输入输出都是123 456 789 。得,又是精度的问题,于是把比例转成double就过了。
https://www.luogu.com.cn/problemnew/solution/P1008
//暴力方法
//P1008中提到了这个判断条件的原理(if后面一大串),是整个代码的核心
#include <iostream>
using namespace std;
int main()
{
int num1,num2,num3;
cin>>num1>>num2>>num3;
bool flag=0;
int a,b,c;
for(int i=123;i<333;i++)
{
a = i;
b = double(num2)/num1*a;
c = double(num3)/num1*a;
if((a/100+a/10%10+a%10+b/100+b/10%10+b%10+c/100+c/10%10+c%10==1+2+3+4+5+6+7+8+9)&&((a/100)*(a/10%10)*(a%10)*(b/100)*(b/10%10)*(b%10)*(c/100)*(c/10%10)*(c%10)==1*2*3*4*5*6*7*8*9))
{
cout<<a<<" "<<b<<" "<<c<<endl;
flag=1;
}
}
if(flag==0)cout<<"No!!!"<<endl;
return 0;
}