우리 모두 ol 'Fizz Buzz 문제에 대해 들었지만 더 많은 요인으로 적용하려고하면 어떻게됩니까? 피즈 버즈 크 래클 팝!
도전
다음과 같이 정수 입력 n , 정수 및 문자열을 포함하는 n 튜플, 그리고 다른 정수 (> 1) k를 갖는 전체 프로그램 을 작성하십시오 .
n int1 str1 int2 str2 (...) intn strn k
명령 행 또는 STDIN에서이 행을 사용할 수 있습니다.
그런 다음 모든 정수 1에서 k까지 int1 , int2 ... intn 중 하나로 나눌 수 있으면 입력 순서대로 모든 해당 str을 출력 한 다음 줄 바꿈을 출력하십시오. 그렇지 않은 경우 정수를 출력 한 다음 줄 바꿈을 출력하십시오.
예를 들어, 입력
3 2 Fizz 3 Buzz 5 Crackle 10
우리는 얻는다
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
그러나 입력 (주문 변경 통지)
3 3 Buzz 2 Fizz 5 Crackle 10
우리는 얻는다
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
선택적인 후행 줄 바꿈이 허용됩니다.
바이트 단위의 최단 코드가 이깁니다.
편집 :
분명히 나는 많은 것을 놓쳤다. 죄송합니다.
- 에서 입력
(C :) 콘솔과 STDIN은 아무것도는 5 바이트 얻는다어디서나 - 전체 프로그램을 참조하십시오.
- strs에 비어 있지 않은 문자열을 가정
- int의 고유성을 보장하지 않습니다
샘플 C ++ 프로그램 (게으 르기 때문에 20으로 제한됨) :
#include <iostream>
#include <string>
using namespace std;
int main() {
string names[20];
int mods[20], n, max;
cin >> max >> n;
for (int i=0; i<n; i++) {
cin >> mods[i] >> names[i];
}
for (int i=1; i<=max; i++) {
bool found = false;
for (int j=0; j<n; j++) {
if (i % mods[j] == 0) {
found = true;
cout << names[j];
}
}
if (!found)
cout << i;
cout << endl;
}
return 0;
}
Generalized Fizz Buzz.