lSpark’s blog

いつか何か書くかもしれません。

APG4b初心者向け:整数平均値繰り上げ計算

APG4bの練習問題の解答

問題文

つの正整数 , が与えられます。 , の平均値を とします。 の小数点以下を切り上げて得られる整数を出力してください。

 

APG4bに取り上げられているとおり、ifや切り上げ関数ceilを使わない解き方を書こうと思います。

 

#include <bits/stdc++.h>
using namespace std;

int main() {
  int a;
  int b;
cin>>a>>b;
  cout<<(a+b+1)/2<<endl;  //ある数の繰上げ=一つ大きい数の繰下げ
}

 

 

次の方が思い付きやすい人もいるかもしれません。

 

#include <bits/stdc++.h>
using namespace std;

int main() {
  int a;
  int b;
  double x;
  cin>>a>>b;  x=(a+b)/2;  //整数割る整数なので小数点以下切り捨ての整数がxに代入される。
  
  int y=(a+b)%2;  //(a+b)割る2の余りがyに代入される。y=0または1。
  cout<<x+y <<endl;
}