Educational Codeforces Round 90 (Rated for Div. 2) A. Donut Shops(思维)

    技术2022-07-10  100

    Donut Shops:

    题目大意:(文末有原题)

    有两种方案买甜甜圈:

    每个a元每盒b个c元;

    给出a,b,c,输出 买多少个时,按方案1更划算,多少个时,按方案2更划算,如果不论多少个这个方案都不是更划算,就输出-1;

    思路:

    首先如果a > c的时候,按方案一肯定什么时候都不划算;

    其次如果每盒平均下来的单价 (c / b) >= a 时,肯定按方案一都比较划算;

    剩下的就是 平均单价 (c / b) < a 时,此时如果想要买的数量刚好是n盒,那肯定按盒买划算,否则就单个买划算;

    代码:

    #include <iostream> using namespace std; typedef long long ll; ll a, b, c; void solve() { cin >> a >> b >> c; if(a >= c) cout << "-1 " << b << endl; else if(c / b >= a) cout << "1 -1" << endl; else cout << "1 " << b << endl; } int main() { int t; cin >> t; while(t--) { solve(); } return 0; }

    原题:

    题目:

    There are two rival donut shops.

    The first shop sells donuts at retail: each donut costs a dollars.

    The second shop sells donuts only in bulk: box of b donuts costs c dollars. So if you want to buy x donuts from this shop, then you have to buy the smallest number of boxes such that the total number of donuts in them is greater or equal to x.

    You want to determine two positive integer values:

    how many donuts can you buy so that they are strictly cheaper in the first shop than in the second shop?how many donuts can you buy so that they are strictly cheaper in the second shop than in the first shop?

    If any of these values doesn't exist then that value should be equal to −1. If there are multiple possible answers, then print any of them.

    The printed values should be less or equal to 10^9. It can be shown that under the given constraints such values always exist if any values exist at all.

    输入:

    The first line contains a single integer t (1≤t≤1000) — the number of testcases.

    Each of the next t lines contains three integers a, b and c (1≤a≤10^9, 2≤b≤10^9, 1≤c≤10^9).

    输出:

    For each testcase print two positive integers. For both shops print such x that buying x donuts in this shop is strictly cheaper than buying x donuts in the other shop. x should be greater than 0 and less or equal to 10^9.

    If there is no such x, then print −1. If there are multiple answers, then print any of them.

    样例:

    Input:  

    4 5 10 4 4 5 20 2 2 3 1000000000 1000000000 1000000000

    Output:

    -1 20 8 -1 1 2 -1 1000000000

    Note:

    In the first testcase buying any number of donuts will be cheaper in the second shop. For example, for 3 or 5 donuts you'll have to buy a box of 10 donuts for 4 dollars. 3 or 5 donuts in the first shop would cost you 15 or 25 dollars, respectively, however. For 20 donuts you'll have to buy two boxes for 8 dollars total. Note that 3 and 5 are also valid answers for the second shop, along with many other answers.

    In the second testcase buying any number of donuts will be either cheaper in the first shop or the same price. 8 donuts cost 32 dollars in the first shop and 40 dollars in the second shop (because you have to buy two boxes). 10 donuts will cost 40 dollars in both shops, so 10 is not a valid answer for any of the shops.

    In the third testcase 1 donut costs 2 and 3 dollars, respectively. 2 donuts cost 4 and 3 dollars. Thus, 1 is a valid answer for the first shop and 2 is a valid answer for the second shop.

    In the fourth testcase 10^9 donuts cost 10^18 dollars in the first shop and 10^9 dollars in the second shop.

    Processed: 0.330, SQL: 9