朝日新聞2006年4月14日のパズル横丁問題

問題

正N角形の頂点を結ぶ正M角形の合計数がNになるようなNを求める。

正N角形も数に勘定する。

例えば正六角形の場合,正三角形が2つと正六角形が1つで,合計数は3になる。

解答への道(ヒント)

正N角形の頂点をM個結んで作るM角形が正M角形になるには,直感的にNがMで割り切れる場合だってことが判る。

取り出す頂点の数を1〜Nまで増やしていき,割り切れた場合の商の合計がNに等しくなる場合を出力する。

久々の超ショートプログラムだ。

#include "puzutl.h"

int main( int argc, cstring argv[])
{
  for( int p=3; p< 100; p++) {
    int         n = 0;
    for( int i=3; i<= p; i++) {
      …
    }
    if( p == n) ps( "Find,N:%d\n", p);
  }
  return    0;
}

Nを3〜100まで廻して結果は1件出力されました。

 

マシンを入れ替えてしばらくMS-IMEを使っていたが,体がATOKになじんでしまっていたようで,変換に違和感を感じるようになった。

使っていたのはATOK12で随分と古いので最新ATOKをオンラインで購入する。オンラインで購入できるのは便利。

やはりATOKの変換の方が自分には合っているようだ。違和感が無くなった。

解速度