美文网首页
#Round 411_Div2

#Round 411_Div2

作者: 宇宇大美女 | 来源:发表于2017-05-13 22:04 被阅读15次

A 题

链接:

http://codeforces.com/contest/805/problem/A

解题思路:

如果两个数相同,那么他们出现次数最多的公因子选择他们俩的任意因子即可,本题中,选择输出他们自己。如果两个数不相同,那么这两个数之间的所有的数(包含这俩数),出现次数最多的公因子肯定是2,因为2是每隔1个数就出现一次,3是每隔两个数出现一次,依次类推

代码:

a,b = input().split()
if a == b:
    print(a)
else:
    print(2)

B 题

链接:

http://codeforces.com/contest/805/problem/B

解题思路:

题目要求字符串中,所有长度为3的子串不能是回文的,并且要求c出现的次数最少。那么我们就让c出现的次数为0。当长度为1和2的时候随便输出a,b的组合都不是回文,我们为了方便统一输出a,aa,当长度为3的时候,肯定不能输出aaa,这样会导致aaa是回文的,所以我们输出aab,长度为4的时候,前3个aab已经保证不是回文的了,只要保证后三个abX不是回文的就行,我们选择第四个为b,所以长度为4的时候,输出aabb,长度为5的时候输出aabba,已经形成了循环,规律出现,输出的字符串是aabb的循环。

代码:

n = int(input())
arr=['a','a','b','b']
res = ''
for i in range(n):
    res+=arr[i%4]
print(res)

C 题

链接:

http://codeforces.com/contest/805/problem/C

解题思路:

这道题可以寻找规律,当输入的数字是偶数的时候,输出这个数的一半减去1,当输入的数字是奇数的时候,输出的数字是这个数减去1除以2。答案是找规律找出来的。

代码:

n = int(input())
if n % 2 == 0:
    print(int(n/2-1))
else:
    print(int((n-1)/2))

D 题

链接:

http://codeforces.com/contest/805/problem/D

解题思路:

这道题从后向前遍历字符串,遇到b就让b的个数加一,遇到a就先让结果加上b的个数,然后让b的个数乘以2。

代码:

s = input()
res = 0

# 记录b的个数
b_cnt = 0  

mod= 10**9+7

for c in s[::-1]:
    if c == 'b':
        b_cnt+=1
    else:
        res+=b_cnt
        b_cnt*=2
        res%=mod
        b_cnt%=mod
print(res)

E 题

暂时不会

F 题

暂时不会

相关文章

网友评论

      本文标题:#Round 411_Div2

      本文链接:https://www.haomeiwen.com/subject/lurfxxtx.html