paizaの水着のやつ(C言語) ※ネタバレ

paizaの彼女を作ろうぜ!みたいな遊びを暇だからやってたのだが水着のやつがクリアできなかった。1000までの階乗を乗せているサイトがあったので適当にそれらをつっこんでいったら合ってるんだけど採点に入れるとすぐ弾かれる。もうわかんないのでなんでかなって思って調べていったらツイッター

(以下ネタバレ)

 

 

という素晴らしいツイートをみつけたので早速実装。成功しました。

9桁までしかとっていないのはダメみたいです。最高乗数が10^12なのでってことですかね

最後の問題はプログラミング云々ってより数学に関する問題って感じでした

下に自分の書いたコード載せときます(汚い)

#include <stdio.h>
#include <math.h>
double func(int);
int main(void){
 int n;
 scanf("%d",&n);
 n = func(n);
 printf("%d\n",n);
}
double func(int n){
 double i,sum = 1;
 double ten;
 for(i = 2; i <= n; i++){
  ten = 1;
  while(fmod(sum*i,ten*10) == 0)
   ten *= 10;
  if(100000000000 < sum*i/ten)
   sum = fmod(sum*i/ten,100000000000);
  else
   sum = (sum*i)/ten;
 }
sum = fmod(sum,1000000000);
return sum;
}

そういえば86duino壊れました笑