【競プロ】UVA10055 – Hashmat the Brave Warrior【C++】

C++

動画解説

今回の問題は簡単なif文、もしくは絶対値を使えば解ける問題です。

問題文の解説

こちらの問題はUVAの競技プログラミングです。

Online Judge
Online Judge

問題文の解説をするとHashmatの兵士と敵の兵士と戦う時は相手との人数差を考慮したい。
なので、その敵の兵士の数の差を求めようという問題です。

input・outputフォーマット

Sample Input 
10 12 
10 14 
100 200 
Sample Output  
2 
4 
100

サンプルコード

サンプルコードはGitHub上にアップロードしております。

cpe/一顆星/uva10055/01.cpp at main · mintson0517/cpe
Contribute to mintson0517/cpe development by creating an account on GitHub.

コードの解説

問題文の中に以下の文章があります。

These two numbers in each line denotes the number soldiers in Hashmat’s army and his opponent’s army or vice versa.
各行の2つの数字は、ハシュマット軍と対戦相手軍の兵士の数、またはその逆を示す。

つまりサンプルインプットのように必ずしも後ろの数字が大きいわけではない点には注意が必要です。
今回は絶対値(absolute value)を使用していきます。

まずは必要なヘッダーファイルをインクルードします。

#include <iostream> //標準入出力
#include <cstdlib> //関数やマクロを提供しているライブラリ
using namespace std;

using namespace std; は、 std 名前空間内のすべての標準ライブラリ関数やオブジェクトに対して、名前空間の指定なしにアクセスできるようにします。

これにより、std::cout のように毎回 std:: を書く必要がなくなります。

int main(){
    long long a, b;
    while(cin >> a >> b){
        cout << abs(a - b) << endl;
    }
    return 0;
}

long型のa,bを定義してからwhileループを使用します。

while (条件) {
    // 条件が真の間、このブロック内のコードが繰り返し実行される
}

つまりa,bが入力されなかった場合は偽となりループが終了します。
兵士の差はabs関数を使用して負の値にならないように求めます。

絶対値の使い方がわからない方は、一応if文で差を求めることができます。

if(a > b){
            cout << a - b << endl;
        }else{
            cout << b - a << endl;
        }

ご参考に!

タイトルとURLをコピーしました