UVa 488 Triangle Wave
题目描述题目要求根据给定的振幅Amplitude\texttt{Amplitude}Amplitude和频率Frequency\texttt{Frequency}Frequency生成三角形波形。每个波形的形状为从111到振幅递增再从振幅-1递减到111每行由重复的数字组成。共输出Frequency\texttt{Frequency}Frequency个波形波形之间以空行分隔最后一个波形后无空行。输入格式第一行一个整数NNN表示测试用例的数量后面跟一个空行。每个测试用例包含两行第一行是振幅AAA1≤A≤91 \le A \le 91≤A≤9第二行是频率FFFF≥1F \ge 1F≥1。两个连续测试用例之间由一个空行分隔。输出格式对于每个测试用例输出FFF个波形每个波形由若干行数字组成波形形状如上所述。波形之间以一个空行分隔最后一个波形后无空行。两个连续测试用例的输出之间由一个空行分隔。样例输入1 3 2输出1 22 333 22 1 1 22 333 22 1题目分析本题的核心是生成三角形波形。每个波形的行数为2A−12A - 12A−1其中前AAA行为递增部分后A−1A-1A−1行为递减部分。波形生成递增部分第iii行1≤i≤A1 \le i \le A1≤i≤A由数字iii重复iii次组成。递减部分第iii行1≤i≤A−11 \le i \le A-11≤i≤A−1由数字A−iA - iA−i重复A−iA - iA−i次组成。输出格式每个波形输出完毕后若还有下一个波形则输出一个空行。每个测试用例的所有波形输出完毕后若还有下一个测试用例则输出一个空行。注意点振幅为111时波形只有一行1。频率可能为000题目保证F≥1F \ge 1F≥1但参考代码中处理了F0F0F0的情况。输出中数字之间无空格每行直接输出重复的数字字符串。复杂度分析每个波形输出O(A2)O(A^2)O(A2)个字符A≤9A \le 9A≤9完全可接受。代码实现// Triangle Wave// UVa ID: 488// Verdict: Accepted// Submission Date: 2016-07-12// UVa Run Time: 0.020s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(intargc,char*argv[]){ios::sync_with_stdio(false);intamplitude,frequency,cases;cincases;for(inti1;icases;i){cinamplitudefrequency;// it is a trick.if(frequency0)continue;if(i1)coutendl;for(intj1;jfrequency;j){if(j1)coutendl;for(intk1;kamplitude;k)coutstring(k,0k)endl;for(intkamplitude-1;k1;k--)coutstring(k,0k)endl;}}return0;}