結果
問題 | No.928 軽減税率? |
ユーザー |
![]() |
提出日時 | 2019-11-29 14:40:19 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 10 ms / 1,000 ms |
コード長 | 2,451 bytes |
コンパイル時間 | 940 ms |
コンパイル使用メモリ | 100,736 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-11-20 21:19:02 |
合計ジャッジ時間 | 2,019 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 34 |
ソースコード
#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <iostream>#include <complex>#include <string>#include <algorithm>#include <numeric>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <unordered_map>#include <unordered_set>#include <bitset>#include <functional>#include <cassert>typedef long long ll;using namespace std;#ifndef LOCAL#define debug(x) ;#else#define debug(x) cerr << __LINE__ << " : " << #x << " = " << (x) << endl;template <typename T1, typename T2>ostream &operator<<(ostream &out, const pair<T1, T2> &p) {out << "{" << p.first << ", " << p.second << "}";return out;}template <typename T>ostream &operator<<(ostream &out, const vector<T> &v) {out << '{';for (const T &item : v) out << item << ", ";out << "\b\b}";return out;}#endif#define mod 1000000007 //1e9+7(prime number)#define INF 1000000000 //1e9#define LLINF 2000000000000000000LL //2e18#define SIZE 200010// GCC __gcd(long long A, long long B)ll gcd(ll a, ll b){if(a == 0) return b;return gcd(b%a, a);}ll lcm(ll a, ll b){return a / gcd(a, b) * b;}const ll e9 = 1000000000;int main(){int P, Q, A;cin >> P >> Q >> A;int d = P * Q == 0 ? 1 : lcm(P, Q);d = lcm(d, 100);ll inf = (e9 + d - 1) / d * d;ll ans = 0;for (int i=1; i<=d; i++) {int L = 0, R = (e9 - i) / d;int bp = i * P / 100;int bq = i * Q / 100 + A;int p = d * P / 100; //店内int q = d * Q / 100; //持ち帰り// bp + p * x < bq + q * xif (P == Q) {if (bp < bq) ans += R + 1;} else {if (P < Q && bp <= bq) {ans += R + 1 - (bp == bq);} else if (P > Q && bp >= bq) {ans += 0;} else if (P < Q) {// bp > bqint l = L, r = R;while(l < r) {int mid = (l + r) / 2;if (bp + p * mid >= bq + q * mid) {l = mid + 1;} else {r = mid;}}ans += R - l + 1;} else {// P > Q, bp < bqint l = L, r = R;while(l < r) {int mid = (l + r + 1) / 2;if (bp + p * mid < bq + q * mid) {l = mid;} else {r = mid - 1;}}debug(p);debug(l);ans += l + 1;}}debug(i);debug(ans);}cout << ans << endl;return 0;}