公式
A - 屋台の営業日数 / Number of Days a Food Stall Is Open 解説
by
A - 屋台の営業日数 / Number of Days a Food Stall Is Open 解説
by
kyopro_friends
問題文がややこしいですが、\(D=(\sum B_i)-(\sum A_i)\) とすると、「\(S\) 円持った状態から、毎日所持金が \(D\) 円ずつ減るので、\(0\) 円未満にならない範囲で最大何日過ごせますか?」となります。
\(D \leq 0\) のとき所持金は減らないので答えは無限大であり -1 を出力します。\(D>0\) のときは \(\left\lfloor\frac{S}{D}\right\rfloor\) 日過ごすことができます。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, m;
long long s;
cin >> n >> m >> s;
vector<int> a(n), b(n);
for(int i=0; i<n; i++) cin >> a[i];
for(int i=0; i<m; i++) cin >> b[i];
long long d = 0;
for(int i=0 ;i<n; i++){
d -= a[i];
}
for(int i=0 ;i<m; i++){
d += b[i];
}
if(d <= 0){
cout << -1 << endl;
}else{
cout << s / d << endl;
}
}
実装例 (Python)
N, M, S = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
D = sum(B) - sum(A)
if D <= 0:
print(-1)
else:
print(S // D)
投稿日時:
最終更新:
