Codeforces Round #836 (Div. 2)(A~D)
A
每个字符出现次数都是偶数,直接拼接
def solve():
s=input()
t=s
print(s+t[::-1])
t=int(input())
for i in range(t):solve()
B
奇数个的情况下n个相同的数字就可以,偶数情况下,可以选择n-2个2,然后1,3
def solve():
n=int(input())
if n%2==1:
for i in range(n):
print(1,end=' ')
else:
for i in range(1,n-2+1):
print(2,end=' ')
print(1,3)
print()
t=int(input())
for i in range(t):solve()
C
把1和x的位置先确定下来,其他位置不变,那么n应该在x的位置,现在要做的是把n往后移,以保证字典序最小,当一个位置可以放置n,必须满足n%i==0 and i%x==0
,这样一直往后移即可
def solve():
n,x=map(int,input().split())
p=[i for i in range(n+1)]
p[1]=x;p[n]=1
if x==n:
for i in range(2,n):
print(p[i],end =' ')
print()
return
p[x]=n
if n%x!=0:
print(-1)
else:
for i in range(x,n):
if n%i==0 and i%x==0:
p[x]=i;p[i]=n
x=i
for i in range(1,n+1):
print(p[i],end= ' ')
print()
t=int(input())
for i in range(t):solve()
D
偶数情况下,可以选择n作为平均数,那么和为n^2,最大值是n+n/2,最小值是n-n/2,差值恰好是n,奇数情况下可以选择4*n作为平均数,最大值5n,最小是3
n,n是奇数的时候n/2+n/2不是n。
def solve():
n = int(input())
if n % 2 == 1:
x = n*4
y = n*4
for i in range(n//2-1):
x += 1
y -= 1
print(x, y, end=' ')
print(4*n, end=' ')
print(3*n, 5*n)
else:
x = n-1
y=n+1
for i in range(n//2):
print(x,y, end=' ')
x -= 1
y+=1
print()
t = int(input())
for i in range(t):
solve()