結果
| 問題 | 
                            No.500 階乗電卓
                             | 
                    
| コンテスト | |
| ユーザー | 
                             777yuuki12323
                         | 
                    
| 提出日時 | 2017-04-07 23:49:15 | 
| 言語 | C++11(廃止可能性あり)  (gcc 13.3.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 711 bytes | 
| コンパイル時間 | 498 ms | 
| コンパイル使用メモリ | 61,976 KB | 
| 実行使用メモリ | 6,948 KB | 
| 最終ジャッジ日時 | 2024-07-16 03:21:35 | 
| 合計ジャッジ時間 | 1,191 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 9 WA * 11 | 
ソースコード
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <map>
typedef long long ll;
#define fi first
#define se second
using namespace std;
ll N;
ll num;
ll ans;
#define mod  1000000000000
            //123456789012
int main(){
  
  cin>>N;
  
  ans = 1;
  int jdg = 1;
  int i;
  
  if( N < 50 ){
    while( N ){
      ans *= N;
      if( ans >= mod ){
        jdg = 0;
      }
      ans %= mod;
      N--;
    }
  }
  
  else{
    jdg = 0;
    ans = 0;
  }
  
  if( jdg ) cout<<ans<<endl;
  
  else{
    int k = 12;
    ll d = ans;
    while( d ){
      k--;
      d /= 10;
    }
    for( i = 0; i < k; i++ ){
      cout<<'0';
    }
    cout<<ans<<endl;
  }
  
  return 0;
}
            
            
            
        
            
777yuuki12323