結果
問題 | No.487 2017 Calculation(2017の計算) |
ユーザー |
|
提出日時 | 2020-09-26 14:52:07 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,834 bytes |
コンパイル時間 | 923 ms |
コンパイル使用メモリ | 101,884 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-29 02:14:49 |
合計ジャッジ時間 | 1,621 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 16 |
コンパイルメッセージ
main.cpp: In function 'll binary_search(ll, ll, ll, std::vector<long long int>)': main.cpp:50:21: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+13' to '2147483647' [-Woverflow] 50 | int right = 1e13; | ^~~~
ソースコード
#include <iostream>#include <numeric>#include <cmath>#include <limits>#include <stdio.h>#include <iomanip>#include <string> // string, to_string, stoi#include <vector> // vector#include <algorithm> // min, max, swap, sort, reverse, lower_bound, upper_bound#include <utility> // pair, make_pair#include <tuple> // tuple, make_tuple#include <cstdint> // int64_t, int*_t#include <cstdio> // printf#include <map> // map#include <queue> // queue, priority_queue#include <set> // set#include <stack> // stack#include <deque> // deque#include <unordered_map> // unordered_map#include <unordered_set> // unordered_set#include <bitset> // bitset#include <cctype> // isupper, islower, isdigit, toupper, tolowerusing namespace std;using ll = long long;#define rep(i, n) for (long long i = 0; i < (long long)(n); i++)ll Max(ll(a), ll(b), ll(c)) {return max(max(a, b), c);}ll Min(ll(a), ll(b), ll(c)) {return min(min(a, b), c);}bool kai(ll A, ll B, ll T,ll N,vector<ll> H) {ll an = 0;rep(i, N) {if (H[i] > B * T) {an += max(((H[i] - B * T - 1) / (A - B)) + 1, ll(0));}}if (an <= T) return true;else return false;}bool isOK(ll A, ll B, ll T, ll N, vector<ll> H) {if (kai(A,B,T,N,H)) return true;else return false;}ll binary_search(ll A,ll B,ll N, vector<ll> H) {int left = 0;int right = 1e13;while (right - left > 1) {int mid = left + (right - left) / 2;if (isOK(A,B,mid,N, H)) right = mid;else left = mid;}/* left は条件を満たさない最大の値、right は条件を満たす最小の値になっている */return right;}ll ketawa(ll N) {ll ans = 0;while (N > 0) {ans += N % 10;N /= 10;}return ans;}int main() {ll M;cin >> M;ll an = 1;ll k = 2017 % M;rep(i, 4034) {an *= k;an %= M;}cout << (an+k)%M << endl;}