A Special “Happy Birthday” Song!!!
前言:如你所见,这是道uva的冷门题。但因为是刘汝佳大神出的,据说还是纪念他的30岁生日,这道题就有了特别的意义。
题意:
废话不多讲,先看题(在考验我的英文:)):
题意大概是这样:
给你N个人,让他们唱我们熟悉的生日歌,每人每次只能唱一句,但每人在整场歌唱中至少要唱一句,并且,每次开一个新的头,就必须将整首歌唱完,也就是说,不能因为每人都唱过一次就不唱了。
思路:
这道题很容易就想到了模拟,先将一首歌的歌词记下来,再根据人数循环模拟唱歌场景。
CODE:
#include<iostream>
#include<cstring>
using namespace std;
const string s[] = {"","Happy","birthday","to","you","Happy","birthday","to","you","Happy","birthday","to","Rujia","Happy","birthday","to","you"};
string a[110];
short n,m,cnt1 = 1,cnt2 = 1;
int main()
{
ios::sync_with_stdio(false);
cin >> m;
if(m > 16)//根据人数计算要唱几次歌
{
if(!(m % 16)) n = m / 16;
else n = m / 16 + 1;//人数不为16的倍数且唱歌次数大于1,就要多唱一次
}
else n = 1;
//cout << n << endl;
for(int i = 1;i <= m;++i)
{
cin >> a[i];
}
for(int i = 1;i <= n;++i)
{
for(int j = 1;j <= 16;++j)
{
if(cnt1 > m)
{
cnt1 = 1;
}
if(cnt2 > 16)
{
cnt2 = 1;
}
cout << a[cnt1] << ": " << s[cnt2] << endl;
++cnt1;
++cnt2;
}
}
return 0;
}
the end!
感谢您的阅读,希望这篇博客能帮到你。
如有错误或建议,欢迎提出,大家一起进步。