結果
問題 | No.666 1000000007で割るだけ |
ユーザー |
![]() |
提出日時 | 2019-11-14 20:33:27 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 3,316 bytes |
コンパイル時間 | 1,678 ms |
コンパイル使用メモリ | 174,820 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-22 00:00:07 |
合計ジャッジ時間 | 2,327 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 24 |
ソースコード
/*** code generated by JHelper* More info: https://github.com/AlexeyDmitriev/JHelper* @author aajisaka*/#include<bits/stdc++.h>using namespace std;void debug_out() { cerr << endl; }template <typename Head, typename... Tail>void debug_out(Head H, Tail... T) {cerr << " " << to_string(H);debug_out(T...);}#ifdef LOCAL#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)#else#define debug(...) 42#endif#define SPEED ios_base::sync_with_stdio(false);cin.tie(nullptr)#define rep(i,n) for(int i=0; i<(int)(n); i++)#define all(v) v.begin(), v.end()template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }using ll = long long;using P = pair<ll, ll>;constexpr double PI = 3.14159265358979323846;mt19937_64 engine(chrono::steady_clock::now().time_since_epoch().count());#include<vector>constexpr ll mod17 = 1e9+7;constexpr ll mod19 = 1e9+9;constexpr ll mod9 = 998244353;ll mod = mod17;// Mod int libraryunordered_map<ll, ll> minvmap;ll minv(ll a, ll m) {auto k = a; auto p = minvmap[a]; if (p != 0) return p;ll b = m, u = 1, v = 0;while (b) { ll t = a/b; swap(a -= t*b, b); swap(u -= t*v, v); }p = (u%m+m)%m; minvmap[k] = p; return p;}struct mint {ll x;mint():x(0){}mint(ll x):x((x%mod+mod)%mod){}mint& fix() { x = (x%mod+mod)%mod; return *this;}mint operator-() const { return mint(0) - *this;}mint& operator+=(const mint& a){ if((x+=a.x)>=mod) x-=mod; return *this;}mint& operator-=(const mint& a){ if((x+=mod-a.x)>=mod) x-=mod; return *this;}mint& operator*=(const mint& a){ (x*=a.x)%=mod; return *this;}mint& operator/=(const mint& a){ (x*=minv(a.x, mod))%=mod; return *this; }mint operator+(const mint& a)const{ return mint(*this) += a;}mint operator-(const mint& a)const{ return mint(*this) -= a;}mint operator*(const mint& a)const{ return mint(*this) *= a;}mint operator/(const mint& a)const{ return mint(*this) /= a;}bool operator<(const mint& a)const{ return x < a.x;}bool operator==(const mint& a)const{ return x == a.x;}};template<typename T>T mod_pow(T a, ll x) {T res = 1;while(x > 0) {if (x & 1) res *= a;a *= a; x >>= 1;}return res;}class combination {// factorialpublic: std::vector<mint> fact;public: std::vector<mint> inv;combination(int n) {fact.resize(n + 1);inv.resize(n + 1);fact[0] = 1;for (int i = 1; i <= n; i++) {fact[i] = fact[i - 1] * i;}inv[n] = mint(1) / fact[n];for (int i = n - 1; i >= 0; i--) {inv[i] = inv[i + 1] * (i + 1);}}// nCrpublic: mint get(int n, int r) {if (n < r || n < 0 || r < 0) return 0;return fact[n]*inv[r]*inv[n-r];}// nPrpublic: mint p(int n, int r) {if (n < r || n < 0) return 0;return fact[n]*inv[n-r];}};class E {public:void solve(istream& cin, ostream& cout) {SPEED;ll a, b; cin >> a >> b;mint ans = a;cout << (ans*b).x << endl;}};signed main() {E solver;std::istream& in(std::cin);std::ostream& out(std::cout);solver.solve(in, out);return 0;}