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()

posted @ 2022-11-29 18:05  指引盗寇入太行  阅读(15)  评论(0编辑  收藏  举报