/* 将1到9这9个数不重复的分成三组进行编写,每组三个数字组成一个数字, 要求3个3位数都是完全平方数,例如:361=19*19,529=23*23,784=28*28
组合后的数字最小是123,最大是987,所以开方以后最小是12(11....取大的) 最大的平方数是31(31....取小的)所以就用for循环从12到31(3个for循环嵌套), 看他们平方以后的数字是否占全了1-9之间的数字,如果占全了就是一种结果 */ #include <stdio.h>
int IsRight(int);
void main() { int n;
for (n = 12; n <= 31;n++) { if ( IsRight(n * n) == 1 ) { printf("%d = %d * %d\t",n * n,n,n); } } printf("\n"); }
int IsRight( int pow ) { int a,b,c;
a = pow / 100; c = pow % 10; if ( a == c ) { return 0; } else { b = (pow % 100) /10; if (a == b) { return 0; } else if ( b != c ) { return 1; } } }
----------------解决方案--------------------------------------------------------