「牛の舌って薄いんですね」

蒼樹うめ『ひだまりスケッチ』第 6 巻「一頭から一枚」より

ふみをチャレンジ[10]

10日間やってこれたけど、問題が難しくなってきたのと、大学の試験が近づいてきたのとで、毎日続けられなくなるかも…

答案

白紙解答…
エラトステネスのふるいを用いればいいらしいけど、さっぱり分からず…

反省

最近、他ブログ様にお世話になりっぱなしで、自分の実力にすこし限界を感じている。大丈夫だろうか…また今度やってみよう。

ふみをチャレンジ[9]

AOJだんだん難しくなってきた…センター試験終わったね。受験生はこれから個人戦になるので、気を引き締め直して頑張ってください。あとでセンター問題解いてみるか。

答案

#include <stdio.h>

int main() {
  int a, b, c, d, n, count;
  
  while(~scanf("%d", &n)) {
    count = 0;
    for(a = 0; a < 10; a++) {
      for(b = 0; b < 10; b++) {
        for(c = 0; c < 10; c++) {
          for(d = 0; d < 10; d++) {
            if(a+b+c+d == n) count++;
          }
        }
      }
    }
    printf("%d\n", count);
  }
  
  return 0;
}

反省

もっとエレガントな方法はないのかと考えてたけど、結局全部求めることにした。最大でも50なのでTime Limit Exceededになることはなさそうということで。

ふみをチャレンジ[8]

センター試験1日目、受験生のみなさんお疲れ様です。残りの科目も頑張ってください。

答案

C

以下、Wrong Answer。

#include <stdio.h>
#include <math.h>

int main() {
  int n, debt = 100000;
  
  scanf("%d", &n);
  while(n > 0) {
    debt = ceil(debt * 1.05 / 1000) * 1000;
    
    n--;
  }
  
  printf("%d\n", debt);
  
  return 0;
}

反省

答え合ってるはずなんだけど…Wrong Answerが返される。なんでー??


[追記] (2012-01-15)
腑に落ちないのだが、他のブログに載っていた方法でやってみると、正解になった。
上の僕の方法がなぜ間違いになるか分かる方いらっしゃったら、指摘していただければ幸いです。

#include <stdio.h>

int main() {
  int n, debt = 100000;
  
  scanf("%d", &n);
  while(n > 0) {
    debt *= 1.05;
    if(debt % 1000 != 0) {
      debt += 1000 - (debt % 1000);
    }
    
    n--;
  }
  
  printf("%d\n", debt);
  
  return 0;
}

ふみをチャレンジ[7]

1週間やってこれた(∩´∀`)∩ワーイ
明日はセンター試験。受験生のみなさん、諦めずに最後まで頑張ってください!

答案

#include <stdio.h>

int main() {
  char str[21], *p;
  
  p = str;
  
  scanf("%s", str);
  while(*p) {
    p++;
  }
  while(p > str) {
    p--;
    putchar(*p);
  }
  putchar('\n');
  
  return 0;
}

反省

これはポインタを勉強したときに作ったことがあったので、簡単に作ることができた。手元の環境ではchar str[20]でも大丈夫だったけど、AOJではRuntime Errorと言われた。\0のスペースの問題なんだろうけど。

Twitterのプロフィールの下に「リストへの追加/削除」ボタンを追加するユーザースクリプト書いた

先日、Twitterでリストの整理をしていたら、間違ってブロックの項目を選んでしまい、フォロワーの方に迷惑をかけてしまった。2つのメニュー項目が隣接しているのが問題で、ブロック時の確認メッセージなど一切ない。また、マイリスト画面を開くためには、メニューを開き、項目をクリックするという二段階の動作が必要で、前々から面倒くさいと感じていた。以上の理由で、別の場所に「リストへの追加/削除」ボタンを追加するユーザースクリプトを書くことにした。
面倒くさかったのが、スクリプトの実行タイミング。onloadの時点では上のメニューバーしか読み込まれていない。DOMNodeInsertedをaddEventListenerして、必要な要素以外を弾けばいいようだ。他に方法があれば試してみたい。
なお、自分自身をリストに追加できなくなったため、自分のユーザータイムラインではボタンは表示されない。

インストール

Twitter List Button - userscripts.org
上記リンクよりインストールしてください。