結果

問題 No.502 階乗を計算するだけ
コンテスト
ユーザー Yamyuki
提出日時 2017-04-08 00:03:00
言語 C90
(gcc 15.2.0)
コンパイル:
gcc-15 -O2 -std=c90 -DONLINE_JUDGE -o a.out _filename_ -lm
実行:
./a.out
結果
MLE  
実行時間 -
コード長 429 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 236 ms
コンパイル使用メモリ 37,932 KB
最終ジャッジ日時 2026-02-24 00:36:05
ジャッジサーバーID
(参考情報)
judge3 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other MLE * 1 -- * 51
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include<stdio.h>

long long fact(long long s,long long e){
	if(e==s) return e;
	long long ans=1;
	if((e-s+1)%2==1){
		ans=e;
		e--;
	}
	ans*=fact(s,s+(e-s+1)/2-1);
	ans%=1000000007;
	ans*=fact(s+(e-s+1)/2,e);
	ans%=1000000007;
	return ans;
}

int main(int argc, char const *argv[]){
	long long n,p=1000000007,ans=1,i;
	scanf("%lld",&n);
	if(n<p){
		ans=fact(1,n);
		printf("%lld\n",ans);
	}else{
		printf("0\n");
	}
	return 0;
}
0