codeforces#518 Div2 ABCD【未完成】

A Birthday

http://codeforces.com/contest/1068/problem/A

题意:

有n种硬币,m个人。m个人要给Ivan送硬币,每个人送的硬币都要互不相同但数量一样。Ivan现在已经有k种了,具体哪k种不知道。现在要求朋友们送的硬币至少有l种是IVan没有的。

思路:

刚开始想的是l/m取上整。后来发现题意是不知道Ivan有的是哪几种,为了保证一定至少l种的话,就需要(l+k)/m取上整。

不可能的情况是人数乘每个人送的硬币数超过n。

用longlong

 1 #include <bits/stdc++.h>
 2 #define inf 0x3f3f3f3f
 3 using namespace std;
 4 
 5 long long n, m, l, k;
 6 int main()
 7 {
 8     while(scanf("%I64d%I64d%I64d%I64d", &n, &m, &k, &l) != EOF){
 9         long long cnt;
10         if((l + k) % m == 0){
11             cnt = (l + k) / m;
12         }
13         else {
14             cnt = (l + k) / m + 1;
15         }
16         if(cnt * m > n){
17             printf("-1\n");
18         }
19         else{
20             printf("%I64d\n", cnt);
21 
22         }
23 
24     }
25     return 0;
26 }
View Code

猜你喜欢

转载自www.cnblogs.com/wyboooo/p/9911890.html