スクリーンショット_2019-04-04_23

文系ギャルが0から始める競技プログラミング#1

Intro

この記事は不定期連載です。
↓最初の一本はこちら↓
文系ギャルが0から始める競技プログラミング#0

・いざ実践

#0でC言語の基本を学んだので、実践編に移っていきます。
師からは

AtCoder初心者向けのコンテストがあるから過去問解いてみたら?

とのことだったので早速見ていきます。
1つのコンテストにつきA→B→C→Dと難易度が上がっていくらしいので、まずはいろんなA問題を解いてみることにしました。

・はじめの1問

問題文
H行 W列の白色のマス目があります。
あなたは h個の行と w個の列を選び、選んだ行または列に含まれるマス目を全て黒色で塗りつぶします。
白色のマス目はいくつ残るでしょうか。
なお、残る白色のマス目の数は行や列の選び方によらないことが証明できます。
制約
入力は全て整数である。
1≤H , W≤20
1≤h≤H
1≤w≤W
入力
入力は以下の形式で標準入力から与えられる。
H W
h w
出力
残る白色のマス目の数を出力せよ。
― A - White Cells

そう、ここでこう思います。
「いや、何言うてんねん!」
文系ギャルに数学どころか算数の素養はなかったのです。

とりあえず書いてみることにしました。
本当にとりあえずです。

ここで全体を計算してから、黒く塗った部分を引けばいいことに気付き、さらに黒いところは重なるということにも気付きました。
あきらかに天才です。

#include <iostream>
using namespace std;
int main()
{
    int H,W;
    cin >> H >> W;
    
    int h,w;
    cin >> h >> w;
    
    cout << H*W-(h*W)-(H*w)+(h*w) << endl;

    return 0;
}

持ってくることと、突っ込むことと、四則演算#0で覚えたのでできました。
(もっとシンプルな計算があるんだと思いますが、これしか思いつかなかったです・・・・Twitterやコメントで教えてください)
恐る恐る動かしてみたら、ちゃんと計算してくれるので一安心。。。
提出して100点をもらいました!○

Outro


そして挫折の危機へ…#2に続く。(不定期連載です。)

これは成功と挫折を繰り返し、
タピオカ片手に難問を解く、
ギャルプログラマが生まれるまでの物語である…。


この記事が気に入ったらサポートをしてみませんか?