結果
問題 | No.1141 田グリッド |
ユーザー |
|
提出日時 | 2020-07-31 22:33:46 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,604 bytes |
コンパイル時間 | 1,485 ms |
コンパイル使用メモリ | 174,300 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-06 19:44:40 |
合計ジャッジ時間 | 6,104 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 WA * 10 |
ソースコード
#include <bits/stdc++.h>#define rep(i,n) for (int i = 0; i < (int)(n); i ++)#define irep(i,n) for (int i = (int)(n) - 1;i >= 0;--i)using namespace std;using ll = long long;using PL = pair<ll,ll>;using P = pair<int,int>;constexpr int INF = 1000000000;constexpr long long HINF = 1000000000000000;constexpr long long MOD = 1000000007;// = 998244353;constexpr double EPS = 1e-4;constexpr double PI = 3.14159265358979;template<int Modulus>struct ModInt {long long x;ModInt(long long x = 0) :x((x%Modulus + Modulus)%Modulus) {}constexpr ModInt &operator+=(const ModInt a) {if ((x += a.x) >= Modulus) x -= Modulus; return *this;}constexpr ModInt &operator-=(const ModInt a) {if ((x += Modulus - a.x) >= Modulus) x -= Modulus; return *this;}constexpr ModInt &operator*=(const ModInt a) {(x *= a.x) %= Modulus; return *this;}constexpr ModInt &operator/=(const ModInt a) {return *this *= a.inverse();}constexpr ModInt operator+(const ModInt a) const {return ModInt(*this) += a.x;}constexpr ModInt operator-(const ModInt a) const {return ModInt(*this) -= a.x;}constexpr ModInt operator*(const ModInt a) const {return ModInt(*this) *= a.x;}constexpr ModInt operator/(const ModInt a) const {return ModInt(*this) /= a.x;}friend constexpr ostream& operator<<(ostream& os,const ModInt<Modulus>& a) {return os << a.x;}friend constexpr istream& operator>>(istream& is,ModInt<Modulus>& a) {return is >> a.x;}ModInt inverse() const {// x ^ (-1)long long a = x,b = Modulus,p = 1,q = 0;while (b) {long long d = a/b; a -= d*b; swap(a,b); p -= d*q; swap(p,q);}return ModInt(p);}ModInt pow(long long N) {// x ^ NModInt a = 1;while (N) {if (N&1) a *= *this;*this *= *this;N >>= 1;}return a;}};using mint = ModInt<1000000007>;int main() {int H,W; cin >> H >> W;vector<vector<ll>> A(H,vector<ll>(W));rep(i,H)rep(j,W) cin >> A[i][j];vector<mint> R(H,1),C(W,1);rep(i,H) {mint cumprd = 1;rep(j,W) {cumprd *= A[i][j];}R[i] = cumprd;}rep(i,W) {mint cumprd = 1;rep(j,H) {cumprd *= A[j][i];}C[i] = cumprd;}mint cumprd = 1;rep(i,H) cumprd *= R[i];int Q; cin >> Q;rep(i,Q) {int r,c; cin >> r >> c;--r; --c;mint ans = cumprd;ans /= R[r];ans /= C[c];ans *= A[r][c];cout << ans << '\n';}return 0;}