![打卡信奥刷题(3467)用C++实现信奥题 P10534 [Opoi 2024] 简谐振动](http://pic.xiahunao.cn/yaotu/打卡信奥刷题(3467)用C++实现信奥题 P10534 [Opoi 2024] 简谐振动)
P10534 [Opoi 2024] 简谐振动题目背景你说得对但是简谐振动十分优美。但是我们不出多边形下海所以你不需要维护一个质点的简谐振动。题目描述已知一个数字串S SS请你判断是否存在一种长度为n nn且n nn为奇数的整数序列A i A_iAi使得A 1 A 2 , A 2 A 3 , … , A n − 1 A n , A n A 1 A_1A_2,A_2A_3,\dots,A_{n-1}A_n,A_nA_1A1A2,A2A3,…,An−1An,AnA1的值按顺序依次拼接起来可以得到S SS。特别的如果存在一种方案使得拼接的时候两项中间用[ 0 , ∞ ) [0,\infty)[0,∞)个0 00分隔仍然可以得到S SS该方案仍然合法。所有数据保证最前面没有前导0 00。输入格式第一行一个整数表示数据组数T TT。接下来每组数据第一行一个整数n nn。第二行一个字符串S SS。输出格式对于每组数据如果有解输出Yes否则输出No用换行符分隔。输入输出样例 #1输入 #13 3 131011 1 5 3 2011输出 #1Yes No Yes说明/提示样例解释第一组样例解释7 6 4 6 4 7 ∣ ∣ ∣ ∣ ∣ ∣ 13 10 11 \begin{matrix} 764\cr \cr 647\cr ||||||\cr 131011\end{matrix}76∣∣1364∣∣1047∣∣11当然你也可以说71 60 − 60 60 − 60 71 ∣ ∣ ∣ ∣ ∣ ∣ 131 0 11 \begin{matrix} 7160-60\cr \cr 60-6071\cr ||||||\cr 131011\end{matrix}7160∣∣13160−60∣∣0−6071∣∣11构造方法不唯一。第二组样例解释如果有解A 1 2.5 A_12.5A12.5而题目说了A AA为整数序列故无解。第三组样例解释1 1 0 1 0 1 ∣ ∣ ∣ ∣ ∣ ∣ 2 0 1 1 \begin{matrix} 110\cr \cr 101\cr ||||||\cr 2011\end{matrix}11∣∣2010∣∣101∣∣1该方案中间用了1 ∈ [ 0 , ∞ ) 1 \in [0,\infty)1∈[0,∞)个0 00分隔符合要求输出Yes。数据范围对于50 % 50\%50%的数据1 ≤ T ≤ 10 1\le T \le 101≤T≤101 ≤ ∣ S ∣ ≤ 10 1\le |S| \le 101≤∣S∣≤101 ≤ n ≤ 3 1 \le n \le 31≤n≤3。对于100 % 100\%100%的数据1 ≤ T ≤ 100 1\le T \le 1001≤T≤100。保证∑ n ≤ 10 6 \sum n\le 10^6∑n≤106且∑ ∣ S ∣ ≤ 10 6 \sum|S|\le 10^6∑∣S∣≤1060 ≤ S i ≤ 9 {\tt 0} \le S_i \le {\tt 9}0≤Si≤9且n nn为奇数。C实现#includebits/stdc.husingnamespacestd;charS[1000010];intmain(){intt;scanf(%d,t);while(t--){intn;scanf(%d%s,n,S1);intlenstrlen(S1),js0,os0,tf0;for(intilen;i;i--)//计算奇数偶数个数{if((S[i]-0)1)js;elseos;}if((n1||js1)(S[len]-0)1)//必须有一个奇数抵消另一个{coutNo\n;continue;}js/2;js*2;//单个不能用if(osjsosn)coutYes\n;//因为n为奇数所以必须有个偶数elsecoutNo\n;}return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容