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

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

ふみをチャレンジ[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;
}