プログラムの実行結果は以下の通り。
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;
}