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