公式

A - スピーカーの音量 / Speaker Volume 解説 by physics0523


初心者の方へ


問題の要求通り、 \(\displaystyle \frac{V_i}{|X_i-P|}\) を全ての \(i\) について足し合わせればよいです。
但し、問題文中にも注意があるように、 \(X_i=P\) なる \(i\) については計算をスキップしなければゼロ除算を起こしてしまうので注意が必要です。
実数を出力することが要求される問題では、計算および出力に十分な桁数を確保する必要があります。
実装例では long double 型を用いており、小数点以下第 \(12\) 位まで必ず出力するように設定してあります。

実装例 (C++):

#include<bits/stdc++.h>

using namespace std;
using ll=long long;
using ld=long double;

int main(){
  ll N,P;
  cin >> N >> P;
  ld res=0.0;
  for(ll i=0;i<N;i++){
    ll X,V;
    cin >> X >> V;
    if(X==P){continue;}
    ld del=((ld)V)/((ld)abs(X-P));
    res+=del;
  }
  cout << fixed << setprecision(12) << res << "\n";
  return 0;
}

投稿日時:
最終更新: