結果
問題 | No.373 かけ算と割った余り |
ユーザー |
![]() |
提出日時 | 2016-06-04 22:27:18 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 2,053 bytes |
コンパイル時間 | 970 ms |
コンパイル使用メモリ | 113,316 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-11 00:51:06 |
合計ジャッジ時間 | 1,445 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 5 |
ソースコード
#include <iostream>#include <algorithm>#include <cmath>#include <vector>#include <complex>#include <queue>#include <deque>#include <set>#include <map>#include <unordered_set>#include <unordered_map>#include <iomanip>#include <assert.h>#include <array>#include <cstdio>#include <cstring>#include <random>#include <functional>#include <numeric>#include <bitset>#include <fstream>using namespace std;#define REP(i,a,b) for(int i=a;i<(int)b;i++)#define rep(i,n) REP(i,0,n)#define all(c) (c).begin(), (c).end()#define zero(a) memset(a, 0, sizeof a)#define minus(a) memset(a, -1, sizeof a)#define watch(a) { cout << #a << " = " << a << endl; }template<class T1, class T2> inline bool minimize(T1 &a, T2 b) { return b < a && (a = b, 1); }template<class T1, class T2> inline bool maximize(T1 &a, T2 b) { return a < b && (a = b, 1); }typedef long long ll;int const inf = 1<<29;namespace math { namespace integer {template<class value_type> value_type mod_mul(value_type x, value_type k, ll m) { if(k == 0) { return 0; } if(k % 2 == 0) { return mod_mul((x+x) % m,k/2, m); } else { return (x + mod_mul(x, k-1, m)) % m; } }template<class value_type> value_type mod_pow(value_type x, value_type n, ll mod) { if(n == 0) { return 1; } if(n % 2 == 0) { return mod_pow(mod_mul(x, x, mod) % mod, n / 2, mod); } else { return mod_mul(x, mod_pow(x, n - 1, mod), mod); } }template<class value_type> value_type extgcd(value_type a, value_type b, value_type& x, value_type& y) { value_type d = a; if(b != 0) { d = extgcd(b,a%b, y, x); y -= (a / b) * x;} else { x = 1, y = 0; } return d; }template<class value_type> value_type mod_inverse(value_type x, ll mod) { return mod_pow(x, value_type(mod-2), mod); /* use fermat */ }template<class value_type> value_type mod_inverse_composite_num_mod(value_type a, ll mod) { value_type x, y; extgcd(a, mod, x, y); return (mod + x %mod) % mod; }}}using namespace math::integer;int main() {ll a, b, c, d; cin >> a >> b >> c >> d;cout << mod_mul(a*b, c, d) << endl;return 0;}