白駿1712損益バランスポイント.cpp



ソースコード
#include <iostream>
using namespace std;
int main(){
    long long a,b,c;
    cin >> a >> b >> c;
    if(b >= c){
        cout << -1 << endl;
        return 0;
    }
    long long BreakEvenPoint = (int)(a / (c-b));
    cout << BreakEvenPoint + 1 << endl;
 

    return 0;
}
  • 変数
    long long a,b,c:固定費用、可変費用、販売費用
    long breakEvenPoint:損益バランスポイント
  • アルゴリズム
  • 失敗コード
    このコードの問題は、breakeventpoint値を1つ増加するたびにタイムアウトすることです.そのため、私たちはいつ利益を生むかを一つの方法にしなければなりません.
  • while(1){
    	if(TotalPrice >= TotalIncome){
    		BreakEvenPoint++;
    	}else{
    		break;
    	}
    	//cout << TotalPrice << " " << TotalIncome << endl;
    	TotalPrice = a + b*BreakEvenPoint;
    	TotalIncome = c*BreakEvenPoint;
    }
  • bがcより大きいと、損益バランスポイントが過不足するため、−1が出力され、プログラムが終了する.
  • では、いっそ式を作って計算します.どうせ
    a+b x BreakEvenPoint>=c x BreakEvenPointはBreakEvenPointの値が必要なので、BreakEvenPointについて作成します.
  • で学んだこと
    long long : -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
    =>範囲に問題があると思ったらlong longと書きましょう
  • 残念と感じ
    数学に関するアルゴリズムの問題は、まず公式ができるかどうかを確認することを学ばなければならない.