プログラムの実行結果は以下の通り。
1 3 9 x 4 6 7 = 64913
プログラムのソースは以下の通り。chkunique() をちょっと工夫した。
#include "puzutl.h" YesNo used[10]; int num[] = { 6, 4, 9, 1, 3}; YesNo chkunique( int n) { int chk[] = { 1, 0, 1, 0, 0, 1, 0, 1, 1, 0}; while( n > 0) { if( ++chk[n%10] > 1) return NO; n /= 10; } return YES; } int main( int argc, cstring argv[]) { for( int a=0; a< 5; a++) { used[a] = YES; for( int b=0; b< 5; b++) { if( used[b]) continue; used[b] = YES; for( int c=0; c< 5; c++) { if( used[c]) continue; used[c] = YES; for( int d=0; d< 5; d++) { if( used[d]) continue; used[d] = YES; for( int e=0; e< 5; e++) { if( used[e]) continue; int n = (num[a] * 100 + num[b] * 10 + num[c]) * (num[d] * 100 + num[e] * 10 + 7); if( chkunique( n)) { ps( "%d %d %d x %d %d 7 = %d\n", num[a], num[b], num[c], num[d], num[e], n); } } used[d] = NO; } used[c] = NO; } used[b] = NO; } used[a] = NO; } return 0; }