#include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<algorithm> #include<stack> #include<cmath> using namespace std; typedef long long ll; const int N = 1e2 + 10; ll a[N], b[N]; int n; int in; bool solve(int x) { for (int i = 1; i <= n; i++) { ll tmp = a[i]; if (i == 1) { if (x != 0) tmp += (x - 1)*b[n]; } else { tmp += b[i - 1] * x; } if (tmp < x*b[i]) { in = i; return false; } } return true; } int main() { #ifdef ACM_LOCAL freopen("./std.in", "r", stdin); #endif int t; scanf("%d", &t); for (int Case = 1; Case <= t; Case++) { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", &a[i]); for (int i = 1; i <= n; i++) scanf("%d", &b[i]); bool flag = 1; for (int i = 1; i < n; i++) { if (b[i] == b[i + 1]) continue; flag = 0; break; } if (a[1] >= b[1] && flag) { printf("Case #%d: INF\n", Case); continue; } ll left = 0, right = 1e18+10; while (left <= right) { ll mid = (left + right) / 2; flag = solve(mid); if (flag) left = mid + 1; else right = mid - 1; } printf("Case #%d: %lld\n", Case,(ll)in + (ll)right * n-1); } } |
Double click to view unformatted code.