每日一题 | 字符串转换问题

时间:2022-07-23
本文章向大家介绍每日一题 | 字符串转换问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

昨日题解

每日一题 | 解一个复杂的方程

这题出自codeforces,链接:https://codeforces.com/gym/102638/problem/A

昨天这题是一个经典的方程求解问题,等式成立的前提也就是

(sqrt{x-3} - sqrt{frac{3x+2}{2}}^3)^7-(x - sqrt{frac{x^2 - 1984}{5}})^3=0

题目当中已经明确说了,方程的根只有一个,并且是整数。

我们观察一下方程,它的指数是奇数,这样的方程的图像类似于下面这张图,也就是说大部分x有意义的域当中,都是递增的,而不是二次方程那样递增和递减对半开的抛物线。

再加上题目当中明确的表示只有一个方程为0的根,那么说明和x轴的交点发生在递增的区间内。实际上我们可以代入两个x尝试一下,很快就可以发现,这个解应该在100到300的区间内。那么剩下的就很简单了,我们只需要使用二分法,很容易找到解。

import math


def get_value(x):
    return pow(math.sqrt(x-3) - pow((3*x + 2)/2, 1/3), 7) - pow(x - math.sqrt((x*x - 1984)/5), 3)


l, r = 100, 300



while r - l > 1:
    m = (l + r) // 2
    v = get_value(m)
    if v > 0:
        r = m
    else:
        l = m+1

print(l)

最后得到的结果是228.

今日问题

有两个人分别不同的字母,其中A喜欢a, c, e...,B喜欢b, d, f...。

现在有一个字符串,我们每次可以交换两个字母,不限制交换次数,要求这两个字母分别被两个不同的人喜欢。请问我们能否通过交换操作使得字符串S1转变成字符串S2。如果可以返回Yes,否则返回No。

样例

- END -