time limit per test: 1.0 seconds
time limit all tests: 1.0 seconds
memory limit: 256 megabytes
魔法學校小學一年級有一種題。就是給乙個字的拼音,給乙個聲調,讓你正確地注音。但魔法老師給了巨量的題,你不用魔法根本不可能做完。所以現在要讓你發明一種魔法完成這個任務。
問題已經講完了,下面開始教授漢語。(會漢語或者自認為會漢語的可以自動跳過)
漢語中乙個字的拼音由聲母和韻母兩部分組成,在極少數情況下也會沒有聲母,但一定有韻母。
一般認為,聲母有 b, p, m, f, d, t, l, n, g, k, h, j, q, x, z, c, s, zh, ch, sh, r, y, w;韻母有:a, e, o, i, u, ü, ai, ei, ui, ao, ou, iu, ie, üe, er, an, en, in, un, ün, ang, eng, ing, ong。
不是所有的字母都能組合的,組合的時候有時會發生一些神奇的事情,例如 üe 變成了 ue。但是標調規則有如下口訣:
有 a 先找 a,沒 a 找 o e,i u 併排標在後,這樣標調不會錯。
只有下面列出的元素可能會被標調。請按照下表輸出(尤其注意 a 不要輸出成 ɑ 了):
輔助材料:由教育部公布的拼音方案。如果有描述不一致的地方,請以本題描述為準。
第一行乙個整數 t
(1≤t≤105
) 。
下面 t
行,每行乙個拼音:拼音聲調在各個拼音之後,用數字 [1-4] 進行表示。例如zhong1 guo2
。沒有數字的說明是輕聲,不用標調。
按照國際慣例,輸入檔案全部由 ascii 編碼組成。ü
用v
來代替。但在輸出中,應仍然用ü
來表示。
對於每一組資料,輸出case x: y
。其中 x 是從 1 開始的測試資料編號,y 是乙個拼音標調後的答案。
注意:對於非 ascii 字元的輸出,請使用 utf-8 編碼。
input
5zhong1
guo2
meque1
nv3
output
case 1: zhōngcase 2: guó
case 3: me
case 4: quē
case 5: nǚ
官方題解:
a. 魔法拼音
這題確實沒說清楚。比賽中也有很多人問這個怎麼樣,那個怎麼樣。但是很多問題問得不符合常理,比方說 iou 會不會出現。本題還提供了所謂了「拼音標準」,並不是沒有用的。作為程式設計競賽,不單單是演算法重要,解決實際問題的能力也很重要。比方說,編碼問題;比方說,合理性問題。
至於用 c/c++ 的輸出問題直接複製題中的字元後使用 printf / cout 都可以,如果編譯器報錯請自行調整編譯器的選項。
比賽的時候就做出兩道,一道是啤酒那個題,乙個就是這個了,其實當時覺得題目說得挺清晰的。
因為題目說了這句話:輔助材料:
由教育部公布的拼音方案
。如果有描述不一致的地方,請以本題描述為準。
所以不要多去想 üe 有時候會變成ue的情況。因為題目說了,以本題描述為準。而且漢語拼音就那麼多組合,當時就想,它出題
也不能瞎組合,給出的測試資料一定是漢語中有的,不可能給亂組合的字串,組合出那種根本就不存在的漢語拼音。
接下來要介紹題目可能讓人有產生誤解的地方:
編碼,其實這個都不重要,只要將題目給出的標號的音複製貼上到**就可以了。完完全全正常思考就可以。
2.初始我以為,aeiouü 先遇到誰標誰,後來發現這樣想是錯的,按這樣的想法,第4組資料就應該標音會再u上。
後來發現,真是的意思是如果字串中有a,就在a上標音調。標a優先
然後e 和 o 是相同級別的,而且漢語中不存在e和o的拼音組合。所以如果字串中有e,標e。
有o標o.
下面考慮i,字串有i,且下一位是u,標u,否則標i.
接下來字串中有u,標u.
接下來字串中有v,變成ü,然後標引。
在輸出字串的過程中如果遇到v,統一按ü輸出。
題目不難,但是我的**寫的特別長,中間步驟都是重複的,但也沒辦法,相同的步驟,輸出的東西不一樣。
#include #include #include #include using namespace std;
char str[100];
///輸出字串的函式
///輸出過程有v,按ü輸出。
void disp(int start,int eend)
printf("\n");
}int main()
else
if(str[len-1]=='2')
if(str[len-1]=='3')
if(str[len-1]=='4')
break;}}
else
}break;
}else if(strstr(str,"o")) ///有o標o輸出字串break
else
if(str[len-1]=='2')
if(str[len-1]=='3')
if(str[len-1]=='4')
break;}}
else
}break;
}else if(strstr(str,"e")) ///有e標e,輸出字串,break;
else
if(str[len-1]=='2')
if(str[len-1]=='3')
if(str[len-1]=='4')
break;}}
else
}break;
}else if(strstr(str,"i")) ///有i
else
if(str[len-1]=='2')
if(str[len-1]=='3')
if(str[len-1]=='4')
break;}}
else
}break;
}else ///否則標i,輸出字串,break
else
if(str[len-1]=='2')
if(str[len-1]=='3')
if(str[len-1]=='4')
break;}}
else
}break;}}
else if(strstr(str,"u")) ///前面那些都沒有,有u標u,輸出字串,break
else
if(str[len-1]=='2')
if(str[len-1]=='3')
if(str[len-1]=='4')
break;}}
else
}break;
}else if(strstr(str,"v")) ///有v標ü,輸出字串,break
else
if(str[len-1]=='2')
if(str[len-1]=='3')
if(str[len-1]=='4')
break;}}
else
}break;}}
}return 0;
}
EOJ 莫干山奇遇
出題人當然是希望出的題目有關oxx,於是想方設法給題目配上一些有關oxx的背景故事,使得它看起來不那麼無趣。但有的時候卻無法引入合適的小姐姐,使得oxx顯得非常可憐。所以出題人刪除了故事,只留下乙個枯燥乏味的數學問題。故事已刪除 給乙個長度為n的序列a1,a2,an,求乙個長度為m的序列b1,b2,...
325project詳細介紹
325project 2013 10 15 在老婆的提醒下才想起來還有這個軟體沒有放上,整整晚了6年啊。一直想發表些什麼程式,可不知道我會寫些什麼,學了那麼多年的程式,好像什麼都沒有寫過。其實也不是什麼也都沒寫過啦,那麼多年一直都在程式。所以想把以前為一家公司做的乙個貨代的流程系統發布出來,取名為3...
AT325量產詳細過程
上個學期期末的時候因為沒有自己刷過機,被許多大牛深深鄙視了一番 第一次系統崩潰還是請超哥給我刷的大白菜,罪過罪過 我這才了解到聯想的系統就是給一般的電腦小白定製的,重新做了一遍系統過後我發現除了一鍵還原這個功能以外,其他的電腦效率方面,大白菜 包括基本開發工具和其他基本軟體都安裝起來之後 都要優於聯...