#include #include #include #include #include // std::back_inserter() #include // std::copy() #include // std::greater() #include // std::swap() #include // accumulate(ALL(vec), 0) 0 は初期値 #include #include // INT_MIN #include // std::isdigit() #include // std::left, std::right #include // std::setw(int), std::setfill(char) using namespace std; // typedef typedef long long ll; typedef unsigned long ul; // #define int long long // macro #define ALL(obj) (obj).begin(), (obj).end() #define REP(i, n) for (int i=0; i < (int)(n); i++) // 0 ~ n-1 #define REPN(i, n) for (int i=1; i <= (int)(n); i++) // 1 ~ n #define DESCEND greater() // sort 降順 大きい順 #define UNIQUE(vec) (vec).erase(unique(ALL((vec))), (vec).end()); // 必ずsortを行なってから #define MIN(vec) min_element(ALL((vec))) // 値を取り出すときは * を先頭につける #define MAX(vec) max_element(ALL((vec))) #define IDX(vec, element_iter) distance((vec).begin(), element_iter) #define SUM(vec) accumulate(ALL((vec)), 0) // 0 は初期値 #define COPY(vec1, vec2) copy(ALL(vec1), back_inserter(vec2)) // vec1をvec2にコピーする vec2は空にしておく必要あり #define zero_pad(num) setfill('0') << std::right << setw(num) // 直後の要素をパディング #define space_pad(num) setfill(' ') << std::right << setw(num) // 直後の要素をパディング // func declaration template void print2DVec(vector< vector >&); template void calcVec(vector&, int, char); int char_to_int(const char); // const const int INF = 10000000; /*MEMO ・辞書順 abc < abcd, atcoder < atlas ・イテレータ std::vector::iterator とタイプするのは面倒なので、 通常は型推論の auto を使用する。 auto iter = max_element(ALL(vec)); ・2次元配列 vector> vec = {{1, 2, 3}, {4, 5, 6}} ・20×10の配列 vector> vec(20, vector(10, 0)); ・(n, m)の多次元配列 vector< vector > vec(n, vector(m, 0)) // 0で初期化 */ int main() { cin.tie(); ios::sync_with_stdio(false); // input int N; cin >> N; // calculation REPN(i, N) { if (N%3 == 0 && N%5 == 0) { cout << "FizzBuzz" << "\n"; } else if (N%3 == 0) { cout << "Fizz" << "\n"; } else if (N%5 == 0) { cout << "Buzz" << "\n"; } else { cout << i << "\n"; } } return 0; } // function template void print2DVec(vector< vector >& vec) { REP(i, vec.size()) { REP(j, vec.front().size()) { cout << vec.at(i).at(j); } cout << endl; } } template void calcVec(vector &vec, int num, char ch) { // vec全体への演算 switch (ch) { case '+': REP(i, vec.size()) vec.at(i) += num; break; case '-': REP(i, vec.size()) vec.at(i) -= num; break; case '*': REP(i, vec.size()) vec.at(i) *= num; break; case '/': REP(i, vec.size()) vec.at(i) /= num; break; case '%': REP(i, vec.size()) vec.at(i) %= num; break; default: cout << "Incorrect Operator" << endl; } } int char_to_int(const char c) { if('0' <= c && c <= '9') return (c - '0'); return -1; }