怎样交换两个整数或字符串_每日一题 | 字符串转换问题

点击上方蓝字,关注并星标,和我一起学技术。

2a800739284bd22a6cd3fc48286b9372.png

昨日题解

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

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

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

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

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

563d1dfcf1f93b5940e456895e0515c7.png

再加上题目当中明确的表示只有一个方程为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。

样例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值