第一题:
题目:给定长度为N的字符串S,它是由字母表上的前K个字母构成,问字典序小于S且长度为N的回文字符串(由字母表上的前K个字母构成)有多少个?
解释:参考官方题解,计算多少个长度为N/2的字符串的字典序小于S[::math.ceil(N/2)],这里计算的方法可采用将字符串转化为K进制数–>十进制数。【代码暂时只能过test set 1,正在查找错误】注:小于该字符串的字符串个数就是这个K进制数。
import math
T=int(input())
for tt in range(T):
N,K=[int(s) for s in input().split()]
ss=input()
if N==1:
ans=ord(ss)-97
else:
hh=math.ceil(N/2)
s1=ss[:hh]
mm=[]
for ii in range(hh):
mm.append(ord(s1[ii])-97)
num=0
for ii in range(hh-1,-1,-1):
num+=mm[ii]*math.pow(K,hh-ii