求大神优化程序,就是能不能不用穷举。用其他的方法能不能做出来
编写程序求以下算式中XYZ的值,其中两数XYZ与YZZ相加的和n(99<n<1000)的值要求从键盘输入。程序运行结果示例1:
Input n(n<1000):
532↙
X=3,Y=2,Z=1
程序运行结果示例2:
Input n(n<1000):
977↙
Invalid
///////////////////以下是希望能被修改的源程序////////////////
#include"stdio.h"
void reduction(int n);
int main()
{
int n;
printf("Input n(n<1000):n");
scanf( "%d" , & n);
reduction(n);
return 0;
}
void reduction(int n)
{
int X, Y ,Z, t, k,flag=0;
for(X=1;X<=9;X++)
{
for(Y=0;Y<=9;Y++)
{
for(Z=0;Z<=9;Z++)
{
t=X*100+Y*10+Z;
k=Y*100+Z*10+Z;
if(t+k==n)
{
printf("X=%d,Y=%d,Z=%dn",X , Y , Z);
flag=1;
break;
}
}
}
}
if(!flag)
{
printf("Invalidn");
}
}