朝日新聞2004年9月25日パズルパーク解答

プログラムの実行結果は以下の通り。

Find: a:8, b:8

結果を図示すると以下のようになる。

ソースは以下の通り。

#include "puzutl.h"

int main( int argc, cstring argv[])
{
  for( int a=1; a<= 9; a++) {
    for( int b=1; b<= 9; b++) {
      int x = (10*a+a)*(10*b+b);
      int c1 = (x/1000)%10;
      int c2 = (x/100)%10;
      int d1 = (x/10)%10;
      int d2 = (x/1)%10;
      if( c1 != c2 || d1 != d2) continue;
      int y = (10*c1+c2)*(10*d1+d2);
      int e1 = (y/1000)%10;
      int e2 = (y/100)%10;
      int f1 = (y/10)%10;
      int f2 = (y/1)%10;
      if( e1 == e2 && f1 == f2) {
        ps( "Find: a:%d, b:%d\n", a, b);
      }
    }
  }
  return    0;
}