fizz-buzz 2D
整数 が渡されるので、 の二次元配列 を出力しよう。
ただし、 は
- は3の倍数でなく、 は5の倍数でないとき、 (数値)
- が3の倍数で、 は5の倍数でないとき、
Fi
(文字列) - は3の倍数でなく、 が5の倍数のとき、
Bu
(文字列) - が3の倍数で、 が5の倍数のとき、
FB
(文字列)
出力例
入力 7 6
に対する出力の例
行 列に を出力している。
text
1 2 3 4 Bu 6
2 4 6 8 Bu 12
Fi Fi Fi Fi FB Fi
4 8 12 16 Bu 24
5 10 15 20 Bu 30
Fi Fi Fi Fi FB Fi
7 14 21 28 Bu 42
出力の幅を揃える方法
数字 ( ) や 文字 (Fi
, Bu
, FB
) を出力した後に \t
を出力すると、数字や文字が良い感じにそろいます。
例えば、以下のコードで上記のような出力例を再現できる。
cpp
#include <string>
#include <iostream>
using namespace std;
int main() {
cout << "1\t2\t3\t4\tBu\t6\t" << endl;
cout << "2\t4\t6\t8\tBu\t12\t" << endl;
cout << "Fi\tFi\tFi\tFi\tFB\tFi\t" << endl;
cout << "4\t8\t12\t16\tBu\t24\t" << endl;
cout << "5\t10\t15\t20\tBu\t30\t" << endl;
cout << "Fi\tFi\tFi\tFi\tFB\tFi\t" << endl;
cout << "7\t14\t21\t28\tBu\t42\t" << endl;
}
Answer
cpp
#include <string>
#include <iostream>
using namespace std;
int main() {
int h, w;
cin >> h >> w;
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
if (i % 3 == 2) {
if (j % 5 == 4) {
cout << "FB\t";
}
else {
cout << "Fi\t";
}
}
else {
if (j % 5 == 4) {
cout << "Bu\t";
}
else {
cout << (i+1) * (j+1) << "\t";
}
}
}
cout << endl;
}
}