1148: 组合三位数之一
时间限制: 1 Sec 内存限制: 128 MB提交: 1110 解决: 755
[提交][状态][讨论版][命题人:admin]
题目描述
把1、2、3、4、5、6、7、8、9组合成3个3位数,要求每个数字仅使用一次,使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。
输入
无
输出
按从小到大的顺序输出这三个三位数,由空格隔开。输出占一行。
#include<iostream> #include<cstring> using namespace std ; #define maxn 300 int num[maxn] ; int total = 0 ; void init(){ for(int i=1 ; i<maxn ; i++){ if(100<=i*i && i*i <=1000){ num[++total] = i*i ; } } } bool check(int num1 , int num2, int num3 ){ int visit[15] ; memset(visit , 0 , sizeof(visit)) ; while(num1){ visit[num1%10] = 1 ; num1 /= 10 ; } while(num2){ visit[num2%10] = 1 ; num2 /= 10 ; } while(num3){ visit[num3%10] = 1 ; num3 /= 10 ; } bool flag = true ; for(int i=1 ; i<10 ; i++){ if(visit[i] == 0) flag = false ; } return flag ; } int main(){ init() ; for(int i=1 ; i<=total ; i++){ for(int j=i+1 ; j<=total ; j++){ for(int k=j+1 ; k<=total ; k++){ if(check(num[i] , num[j] , num[k])){ cout<< num[i]<<" " << num[j]<<" "<<num[k]<<endl ; } } } } return 0 ; }