6.Q fizz-buzz 2D(★★★)
問題
整数が渡されるので、の二次元配列を出力しよう。
ただし、は
- は3の倍数でなく、は5の倍数でないとき、(数値)
- が3の倍数で、は5の倍数でないとき、
Fi(文字列) - は3の倍数でなく、が5の倍数のとき、
Bu(文字列) - が3の倍数で、が5の倍数のとき、
FB(文字列)
入出力例
例1
入力
Input
7 6出力
Output
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 <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;
}解答例
解答例
cpp
#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;
}
}