C/C++の宿題を片付けます 58代目
■ このスレッドは過去ログ倉庫に格納されています
0215デフォルトの名無しさん
2006/01/20(金) 01:11:08#include <cmath>
#include <cstdio>
using namespace std;
bool isOK( int y ) {
bool digit[10]={};
for( int i = 0, j = 100000000; i < 9; ++i, j/=10 ) {
int n = y / j;
y %= j;
digit[n] = true;
}
for( int i = 1; i <= 9; ++i ) if( !digit[i] ) return false;
return true;
}
int main( ){
// 123456789 <= x*x <= 987654321 より x上限がわかる
int max_x = (int)floor( sqrt( 987654321.0 ));
int min_x = (int)ceil( sqrt( 123456789.0 ));
for( int x = min_x; x <= max_x; ++x ) {
int y = x * x;
if( isOK( y )) printf( "y=%d x=%d\n", y, x );
}
}
■ このスレッドは過去ログ倉庫に格納されています