終わってた・・・。週末ちょっといぢる気がおきませんでした。
m*n格子の中に正方形がいくつあるかという問題。
ちょっと考えてm>nとすると
m*n+(m-1)*(n-1)+・・・+(m-(n-1))*1
が解答になることに気がついた。
一項目が1*1の正方形の数、2項目が2*2の、最終項がn*nの正方形の数になります。
一応僕のコードが
a,m;main(n){for(;m*n||~scanf("%d%d",&m,&n,a=a&&!printf("%d\n",a));)a+=m--*n--;}
どっちが大きいか試験するコストが惜しいと思って両方デクリメントしながら
0になるまで加算しました。
m*nが二箇所あるのが気に入らなかったんだけど、うまくまとめきらず終了。
nnさんがすごい。
main(x,y){for(;~scanf("%d%d",&x,&y);)printf("%d\n",~y*y*(--y-3*x)/6+y/x);}
ちょっと見、よくわからない^^;;
うまくまとめたらこうなるのかな???
0 件のコメント:
コメントを投稿