ようやく通ったB問題、なんか自分の開発能力の低さに涙がでそうになる今日この頃だが、なんとか通った笑
この前の記事のプログラムのデバッグ用とコメントアウトしていたものを外して、実行すると、N = 3のときこんな感じ
a[3] = 1
a[4] = 3
a[5] = 6
a[6] = 10
a[7] = 15
a[8] = 21
a[9] = 25
a[10] = 27
a[11] = 27
a[12] = 25
a[13] = 21
a[14] = 15
a[15] = 10
a[16] = 6
a[17] = 3
a[18] = 1
これ、よくよく見たら、N~N×6までの数字が出てくるんやけど
ちょうど、その間をとった(int) (N + N × 6) / 2 (※(int)はキャストのつもり)
がでてくる。ので、結局、プログラムをかなり短縮してこう書き換えた。
- #include <stdio.h>
- int main(void){
- int N = 0;
- while(!(1 <= N && N <=256)){
- scanf("%d", &N);
- }
- if(N == 1){ //N=1のときのみ処理がかわる。
- puts("1");
- }
- else {
- printf("%d\n", (N + N*6)/2);
- }
- return 0;
- }
結局これで、AC(Accept)されました。
この前、書いたプログラムが間違えてて、今回のプログラムがあっているとゆうのも
悲しくなってしまうがまぁ、なにわともあれあきらめずちゃんと最後までできたので良かったとも感じている。