FizzBuzzWhizz
FizzBuzzWhizz
你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏。此时有100名学生在上课。游戏的规则是:
1. 你首先说出三个不同的特殊数,要求必须是个位数,比如3、5、7。
2. 让所有学生拍成一队,然后按顺序报数。
3. 学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz;如果所报数字是第二个特殊数(5)的倍数,那么要说Buzz;如果所报数字是第三个特殊数(7)的倍数,那么要说Whizz。
4. 学生报数时,如果所报数字同时是两个特殊数的倍数情况下,也要特殊处理,比如第一个特殊数和第二个特殊数的倍数,那么不能说该数字,而是要说FizzBuzz, 以此类推。如果同时是三个特殊数的倍数,那么要说FizzBuzzWhizz。
5. 学生报数时,如果所报数字包含了第一个特殊数,那么也不能说该数字,而是要说相应的单词,比如本例中第一个特殊数是3,那么要报13的同学应该说Fizz。如果数字中包含了第一个特殊数,那么忽略规则3和规则4,比如要报35的同学只报Fizz,不报BuzzWhizz。
5. 学生报数时,如果所报数字包含了第一个特殊数,那么也不能说该数字,而是要说相应的单词,比如本例中第一个特殊数是3,那么要报13的同学应该说Fizz。如果数字中包含了第一个特殊数,那么忽略规则3和规则4,比如要报35的同学只报Fizz,不报BuzzWhizz。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<cstring> 3 #include<string> 4 5 using namespace std; 6 7 void FizzBuzzWhizz(int a, int b ,int c,int range); 8 9 void FizzBuzzWhizz(int a, int b ,int c,int range) 10 { 11 char s[10]; 12 sprintf_s(s,"%d",a); 13 for(int i = 1; i <= range; i++) 14 { 15 string strout; 16 char temp[10]; 17 sprintf_s(temp,"%d",i); 18 string str(temp); 19 if(str.find(s)!= string::npos) 20 { 21 strout += "Fizz"; 22 } 23 else 24 { 25 if(i%a==0) 26 { 27 strout += "Fizz"; 28 } 29 if(i%b==0) 30 { 31 strout += "Buzz"; 32 } 33 if(i%c==0) 34 { 35 strout += "Whizz"; 36 } 37 if (strout.empty()) 38 { 39 strout = str; 40 } 41 } 42 cout << temp << " " << strout <<endl; 43 } 44 } 45 46 int main(void) 47 { 48 int num1,num2,num3,range; 49 while(1) 50 { 51 cout << "请输入3个特殊数和总人数:"; 52 cin >> num1 >> num2 >> num3 >> range; 53 if(num1<0 || num2<0 || num3<0 || range<0 || num1==num2 || num1==num3 || num2==num3) 54 { 55 cout << "请输入正确的特殊数和总人数" << endl; 56 } 57 else 58 { 59 FizzBuzzWhizz(num1,num2,num3,range); 60 } 61 } 62 }
1 def FizzBuzzWhizz(p_a,p_b,p_c): 2 for x in xrange(1,100): 3 print x,"Fizz"[0 if str(x).find(str(p_a))>-1 else 4:] or "Fizz"[x%p_a*4:] + "Buzz"[x%p_b*4:] + "Whizz"[x%p_c*5:] or x;