洛谷P1618
|q天边的风
|原创
#include<bits/stdc++.h>
using namespace std;
int main()
{
int A,B,C,flag=0;//首先是flag的使用,用flag标记很方便,它可以标记一个或多个数,也可以标记数组元素,只要它能//粘上去的都能被标记。
int i1,i2,i3;
cin>>A>>B>>C;
for(int i=1; i<=999; i++)//其实999这个范围还能被优化的,但是一时半会我没想出来。
{
i1=i*A;
i2=i*B;
i3=i*C;
if((i1/100+i1/10%10+i1%10+i2/100+i2/10%10+i2%10+i3/100+i3/10%10+i3%10==45)&&((i1/100)*(i1/10%10)*(i1%10)*(i2/100)*(i2/10%10)*(i2%10)*(i3/100)*(i3/10%10)*(i3%10)==362880))//这个判断条件我以前真的没接触过过,我觉得一个程序的判断条件完全可作为评判一个程序简易好坏依据。这个就是根据如果n个数相加与相乘的结果与预期的值相等,那么这n个数就是我们想要确定的这n个数。nice!
{
cout<<i1<<" "<<i2<<" "<<i3<<endl;//在cout中不加" "它是不会自己分配空格的,endl的作用是换行作用。
flag=1;//用flag的目的就是以防程序找不到符合条件的数,用if语句会太过冗余。flag就是优化版的if。
}
}
if(flag==0){
cout<<"No!!!";
}
return 0;
}
//这个三连击的程序总的来说还是比较简洁了,角度也比较独特。