高中生程式解題系統:c119: 10220 - I Love Big Numbers

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

題目連結 http://zerojudge.tw/ShowProblem?problemid=c119

用陣列來處理,此部分可參考 超長整數運算(大數運算)一文。

程式碼:
#include<stdio.h>
int val[1001], p[10000], psize = 0;

int main(){
  int i, j, n;

  p[0] = 1;
  val[0] = 1;
  for(i = 1; i <= 1000; i++){
    for(j = 0; j <= psize; j++){
      p[j] *= i;
    }
    for(j = 0; j <= psize; j++){
      p[j+1] += p[j]/10;
      p[j] %= 10;
      val[i] += p[j];
    }
    while(p[psize+1]){
      psize++;
      p[psize+1] += p[psize]/10;
      p[psize] %= 10;
      val[i] += p[psize];
    }
  }
  while(scanf("%d", &n)==1){
    printf("%d\n", val[n]);
  }
  return 0;
}

沒有留言: