アットウィキロゴ

FizzBuzz

0221 : FizzBuzz



解説

「FizzBuzz」のルールに従って正しい発言者が誰かを答える。
3で割り切れる、5で割り切れる、3と5で割り切れる、それ以外、で場合分けすればいい。

プログラム

C


C++#include <iostream>

#include <string>
#include <sstream>
#include <vector>
using namespace std;

string s1 = "Fizz", s2 = "Buzz", s3 = "FizzBuzz";

int main() {
	int m, n;
	while (cin >> m >> n, m || n) {
		bool man[1000+1];
		for (int i = 1; i <= m; i++) man[i] = true;

		string s;
		int cnt = 1, p = m;
		for (int i = 1; i <= n; i++) {
 			cin >> s;
			if (p == 1) continue;
			while (!man[cnt]) {
				cnt++;
				if (cnt > m) cnt = 1;
			}

			if (i%15 == 0) {
				if (s != s3) {
					man[cnt] = false;
					p--;
				}
			} else if (i%5 == 0) {
				if (s != s2) {
					man[cnt] = false;
				p--;
				}
			} else if (i%3 == 0) {
				if (s != s1) {
					man[cnt] = false;
					p--;
				}
			} else {
				if (s != s1 && s != s2 && s != s3) {
				stringstream ss(s);
					int a;
					ss >> a;
					if (a != i){
						man[cnt] = false;
						p--;
					}
 				} else {
 					man[cnt] = false;
 					p--;
				}
			}
			cnt++;
			if (cnt > m) cnt = 1;
		}
 
 		int id = 1;
		while (!man[id]) id++;
		cout << id;
		for (int i = id+1; i <= m; i++) {
			if (man[i]) cout << ' ' << i;
		}
		cout << endl;
	}

	return 0;
}

Java

最終更新:2012年12月10日 16:47