1072-ゲーム-こちらを探して
質問する
質問リンク:https://www.acmicpc.net/problem/1072
ポリシー
コード#コード#
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
long long X, Y, Z;
bool isChange(long long win, long long total){
/// 여기서 win*100 하는 순간 오버플로우가 나올 수 있음 이런거 까지 생각해야함
long long val = (win*100)/total;
if(val > Z) return true;
else return false;
}
int res = 2147000000;
int BinarySearch(long long lt, long long rt){
if(lt> rt){
return res;
}
else{
long long mid = (lt+rt)/2;
if(isChange(Y+mid, X+mid)){
if(mid < res) res = mid;
return BinarySearch(lt, mid-1);
}
else{
return BinarySearch(mid+1, rt);
}
}
}
int main(){
// freopen("../input.txt","rt",stdin);
scanf("%lld %lld",&X, &Y);
Z = (Y*100)/X;
int ret = BinarySearch(1, X);
if(ret == 2147000000) printf("-1\n");
else printf("%d\n",ret);
return 0;
}
感想
この問題はどうしてこの探求なのか.そう思います.しかし、よく考えて、なぜこの探求なのか考えてみましょう.また、平均値を求める場合は100を掛け、その場合はlong longを使います.
これは間違いやすい問題だ.
Reference
この問題について(1072-ゲーム-こちらを探して), 我々は、より多くの情報をここで見つけました https://velog.io/@gomster_96/백준-1072-게임-이분-탐색テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol