Yukicoder No.500 階乗電卓
剰余とるけどそのまま出力ではだめなの面白かった。$2$WAした。
- すぐに飽和するので$0$になるまで回せばよい
- $0$埋めは
printf("%012lld\n", x);
が楽
#include <cstdio>
using ll = long long;
using namespace std;
int main() {
ll n; scanf("%lld", &n);
constexpr ll mod = 1e12;
ll fact = 1;
bool is_overflown = false;
for (ll i = 0; fact and i < n; ++ i) {
if (fact * (i+1) >= mod) is_overflown = true;
fact = fact * (i+1) % mod;
}
printf(is_overflown ? "%012lld\n" : "%lld\n", fact);
return 0;
}