特定のルールの数列を出力しろというもの
ルールを見つけるためエクセルで前項との差を求めてみると
3回ごとに2が現れます。これで3回周期の何かという推定が出来ます。
値を見ていくと3n番目が2*(n-1)、3n+1番目がn、3n+2番目がn+1という数列のようです。
ここからこういう回答ができました。
main(n){for(;n-402;)printf("%d\n",(n%3?:n-1)-1+n++);}
3n+1番目を(n-1)+1、3n+2番目が(n-1)+2とみることでn-1基準にしています。
ただ、n-1が二回出てくるのが気に食わないためm=n-1としてしまおうと思ったけど
うまく出来ませんでした。
上位陣のコードを見ると
leonidさん
n;main(){for(;n<401;)printf("%d\n",(-~n%3?:n)+n++);}
inaniwaさん
i;main(){for(;i<401;)printf("%d\n",(-~i%3?:i)+i++);}
nnさん
-~n%3を使ってますね。
-~n=n+1なのでこれで良い訳です。
うまくやりますねぇ。
0 件のコメント:
コメントを投稿