zhi0mx @ 2021-05-23 09:45:05
#include <iostream>
using namespace std;
int a,b,c,x,y,z,x1,x2,x3,y1,y2,y3,z1,z2,z3,f;
int main()
{
cin>>a>>b>>c;
for (int i=1;i<1000;i++)
{
x=i*a,y=i*b,z=i*c;
if (x<1000 && y<1000 && z<1000)
continue;
x1=x/100;
x2=x%100/10;
x3=x%10;
y1=y/100;
y2=y%100/10;
y3=y%10;
z1=z/100;
z2=z%100/10;
z3=z%10;
if (x1+x2+x3+y1+y2+y3+z1+z2+z3==45 && x1*x2*x3*y1*y2*y3*z1*z2*z3==362880)
cout<<x<<' '<<y<<' '<<z,f=1;
}
if (!f)
cout<<"No!!!";
return 0;
}
by 违规用户名76G!ihcm @ 2021-05-23 09:46:44
@zhi0mx x<1000&&y<1000&&z<1000 continue;
就都没了
by lorz @ 2021-05-23 11:03:09
你这问题也太多了。 1.如果我给样例“2 4 6”其实和题目样例一样,但你这个程序就不会有“219 438 657”这类答案,因为没有整数乘偶数是奇数。可以用gcd去把数据变成互质的。 2.输出的三个数本来就该小于1000,因为都是三位数啊,所以那个"if (x<1000 && y<1000 && z<1000) continue;"就不行,我猜你是想写"if(x<100 || y<100 || z<100) continue;"(有数不是三位数就不符合条件)吧,其实也可以改成"if(x<100) continue;"因为X<Y<Z这是一定的 3.你输出少了一个<<endl;就不会换行,输出格式有误 4.还有很多地方可以优化,并不是有错,只是很慢。比如那个for循环不一定从1开始,到1000结束等
by zhi0mx @ 2021-05-30 09:59:22
还是不行
#include <iostream>
using namespace std;
int a,b,c,x,y,z,x1,x2,x3,y1,y2,y3,z1,z2,z3,num[11],sn[11],f;
int main()
{
cin>>a>>b>>c;
for (int i=a;i>1;i--)
if (a%i==0 && b%i==0 && c%i==0)
a/=i,b/=i,c/=i;
for (int i=1;i<1000;i++)
{
x=i*a,y=i*b,z=i*c;
if (x<100 && y<100 && z<100)
continue;
num[1]=x/100;
num[2]=x%100/10;
num[3]=x%10;
num[4]=y/100;
num[5]=y%100/10;
num[6]=y%10;
num[7]=z/100;
num[8]=z%100/10;
num[9]=z%10;
for (int i=1;i<=9;i++)
{
sn[num[i]]++;
if (sn[num[i]]>1)
f=1;
}
if (!f && !sn[0])
cout<<x<<' '<<y<<' '<<z<<endl;
}
return 0;
}