牛客小白月赛93

A 生不逢7
 1 def check(num):
 2     return '7' in str(num) or num%7==0
 3 
 4 def solve():
 5     n,a,k = LII()
 6     d = a+1
 7     for i in range(k):
 8         if check(d):
 9             print('p',end = ' ')
10         else:
11             print(d,end = ' ')
12         d = d+n
13     print()

B 交换数字

 n = II()
    a = I()
    b = I()
    a1 = ''
    b1 = ''
    for i in range(n):
        if a[i]<=b[i]:
            a1+=a[i]
            b1+=b[i]
        else:
            a1+=b[i]
            b1+=a[i]
    print(int(a1)*int(b1)%Mod)

C 老虎

计算图案相同的概率

三个都相同:在m个图案中挑选一个即可

两个相同:1-三个相同-都不同

都不同:m*(m-1)*(m-2)

最后除总共可以挑选的方案m**3

def solve():
    m,a,b,c = LII()
    ans3 = (m-2)*(m-1)*m#都不同
    ans2 = 3*(m-1)*m
    res = (c*m+b*ans2+a*ans3)
    print(res*pow(m**3,Mod-2,Mod)%Mod)

D 幻兽帕鲁

找规律,手写一遍替换过程,发现是对应位置的值是每个x的二进制位翻转后的值

n,m = LII()
   for i in range(m):
       x = II()
       z = 0
       for j in range(n):
           if x>>j & 1:#如果该位是1
               z |= 1<<(n-1-j)#z按位或对应位置1
       print(z)

E 奏绝

看别的博主题解 | #E 奏绝#_牛客博客 (nowcoder.net)

举个例子s=010011000

s 0 1 0 0 1 1 0 ...

idx

 

1 2 3 4 5 6 7 ...
s0 1 1 4 8 8 8 15  

s1

0 2 2 2 7 13 13  

cnt0

1 1 2 3 3 3 4  
cnt1 0 1 1 1 2 3 3  
ans 0 1 2 6        

 

ans=前一个ans+如果当前是0,算有多少个1从1-(i-1),*i到当前位置,再减去1自己的坐标总和

F 本初字符串

 

posted @ 2024-05-11 19:50  你也喜欢阿狸吗  阅读(39)  评论(0)    收藏  举报