結果
| 問題 | No.1237 EXP Multiple! |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-10-09 15:48:52 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,780 bytes |
| 記録 | |
| コンパイル時間 | 731 ms |
| コンパイル使用メモリ | 96,588 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-20 06:50:37 |
| 合計ジャッジ時間 | 2,557 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 13 WA * 5 RE * 1 |
ソースコード
#include <algorithm>
#include <cassert>
#include <cmath>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <vector>
#define repeat(i, n) for (int i = 0; (i) < (n); ++(i))
#define repeat_from(i, m, n) for (int i = (m); (i) < (n); ++(i))
using namespace std;
template <class T>
inline int sz(T &x) {
return x.size();
}
template <class T>
inline bool setmax(T &a, T b) {
if (a < b) {
a = b;
return true;
}
return false;
}
template <class T>
inline bool setmin(T &a, T b) {
if (a > b) {
a = b;
return true;
}
return false;
}
template <typename T, typename X>
auto vectors(T a, X x) { return vector<T>(x, a); }
template <typename T, typename X, typename Y, typename... Zs>
auto vectors(T a, X x, Y y, Zs... zs) {
auto cont = vectors(a, y, zs...);
return vector<decltype(cont)>(x, cont);
}
long long ll_pow(long long x, int n) {
long long res = 1;
while (n > 0) {
if (n & 1) res *= x;
x *= x;
n >>= 1;
}
return res;
}
long long factorial(long long x) {
long long res = 1;
while (x > 0) {
res *= x;
--x;
}
return res;
}
int main() {
int N;
cin >> N;
vector<int> A(N);
repeat(i, N) cin >> A[i];
int maxA = -10, minA = 1000000010;
repeat(i, N) {
setmax(maxA, A[i]);
setmin(minA, A[i]);
}
if (maxA >= 4) {
cout << 0 << endl;
} else if (minA == 0) {
cout << -1 << endl;
} else {
long long res = 1;
repeat(i, N) {
res *= ll_pow(A[i], factorial(A[i]));
}
cout << 1000000007 % res << endl;
}
return 0;
}