Codeforces 991 车牌号组合数学计算
A
/*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_back using namespace std; typedef long long ll; typedef unsigned long long ull; const int mod = 1e9 + 7; const int gakki = 5 + 2 + 1 + 19880611 + 1e9; const int MAXN = 3e5 + 5, MAXM = 6e6 + 5; /*int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], tot = 1; inline void addedge(int u, int v, ll val) { to[++tot] = v; value[tot] = val; nxt[tot] = Head[u]; Head[u] = tot; }*/ int main() { ios_base::sync_with_stdio(0); cin.tie(0); int a, b, c, n; cin >> a >> b >> c >> n; if (max(c, max(a, b)) > n) { cout << -1 << endl; return 0; } if (c > min(a, b)) { cout << -1 << endl; return 0; } if (n - a - b + c < 1) { cout << -1 << endl; return 0; } cout << n - a - b + c << endl; return 0; }
B
*10后就不会有精度问题了
/*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_back using namespace std; typedef long long ll; typedef unsigned long long ull; const int mod = 1e9 + 7; const int gakki = 5 + 2 + 1 + 19880611 + 1e9; const int MAXN = 3e5 + 5, MAXM = 6e6 + 5; /*int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], tot = 1; inline void addedge(int u, int v, ll val) { to[++tot] = v; value[tot] = val; nxt[tot] = Head[u]; Head[u] = tot; }*/ int num[105]; priority_queue<int, vector<int>, greater<int> > que; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; int sum = 0; for (int i = 1; i <= n; i++) { cin >> num[i]; num[i] = num[i] * 10; que.push(num[i]); sum += num[i]; } int level = 45 * n; int ans = 0; while (sum < level) { sum += 50 - que.top(); que.pop(); ans++; } cout << ans << endl; return 0; }