字节跳动软件开发笔试

给定四个正整数a, b, l, r,小红希望你在[l, r]区间内寻找一个正整数x,满足x恰好是ab其中一个的倍数(不能同时为ab的倍数)。你能帮帮她吗?

共有q次询问。

输入描述

第一行输入一个正整数q,代表询问次数。

接下来的q行,每行输入四个正整数a, b, l, r,代表一次询问。

1 q 10^5

1 a, b 10^9

1 lr< 10^4

输出描述

输出q行,如果区间内不存在合法的数,请输出-1;否则输出任意一个合法解

示例 1

输入

3

2 3 5 9

5 4 7 10

4 6 9 15

输出

9

8

-1

说明

第一组询问,输出89均可通过本题

第二组询问,输出10也是可以的。

第三组询问,显然无解。

 

#include <iostream>
#include <algorithm>

using namespace std;

// 辗转相除法求最大公约数
long long gcd(long long a, long long b) {
    while (b != 0) {
        long long t = b;
        b = a % b;
        a = t;
    }
    return a;
}

// 计算最小公倍数
long long lcm(long long a, long long b) {
    return a / gcd(a, b) * b; // 防止溢出
}

int main() {
    int q;
    cin >> q;

    while (q--) {
        long long a, b, l, r;
        cin >> a >> b >> l >> r;

        long long lcm_ab = lcm(a, b);
        long long result = -1;

        // 找到大于等于 l 的最小 a 的倍数和 b 的倍数
        long long min_a = ((l + a - 1) / a) * a;
        long long min_b = ((l + b - 1) / b) * b;

        // 从 min_a 和 min_b 开始检查,直到 r
        for (long long x = min(min_a, min_b); x <= r; x++) {
            if ((x % a == 0 || x % b == 0) && x % lcm_ab != 0) {
                result = x;
                break;
            }
        }

        cout << result << endl;
    }

    return 0;
}

 

小红定义一个字符串的权值为:相同连续字符组成的尽可能长的连续段数量。例如,"aabbccc"的权值为 3,因为"aa"+"bb"+"ccc",共有3个连续段。

小红拿到了一个字符串,她有若干次询问,每次询问截取一个连续子串,希望你回答这个连续子串的权值。你能帮帮她吗?

输入描述

第一行输入两个正整数nq,代表字符串长度和询问次数

第二行输入一个长度为n的、仅由小写字母组成的字符串。

接下来的q行,每行输入两个正整数li, ri,代表查询的是第li个字符到第ri个字符组成的

子串。

1 <=n, q<=10^5

1 <= li <= ri <= n

输出描述

输出q行,每行输出一个正整数,代表查询的子串的权值。

示例 1

输入

7 3

aabbccc

1 7

2 4

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要发布2024年(2025届)嵌入式软件开发相关岗位笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论
哥,投的什么岗位
点赞 回复 分享
发布于 03-15 22:06 四川
没有投嵌入式吗?
点赞 回复 分享
发布于 03-15 22:10 四川

相关推荐

03-17 12:07
已编辑
腾讯_CSIG_高级前端工程师
这里的经验主要针对计算机、信息类公司的面试,主要针对几个大厂:第一优先级:【整理你的简历】。这里就不分享经验了,网上到处都是经验。就一个简单的方法,在牛客上偷窥一个拿多个offer的大佬。有些大佬水群会把简历发出来,你就把他的简历copy下来,然后把内容替换成自己的,不要改格式。失败的简历多种多样,成功大佬的简历相差不大。这里主要是提醒下大家,网上很多骗钱的模版,这样那样花里胡哨的,实际上你的简历HR可能只用了2秒钟就筛完了。第二优先级:【背好面经】。一面大多都会问些面经,因为面试官有一项是考察面试者基础,简单问题没答上很容易触发必死裁决(学校越拉越要背好面经,因为你在面试阶段没有犯错的机会)。至于面经准备的丰富程度就看个人了,以前我面试的时候我室友说我在讲相声串口,很丝滑,但是并没有用,该j还是j。第三优先级:【准备好项目经历】。项目经历在面试眼中有个鄙视链:开源贡献/实习项目&nbsp;&gt;&nbsp;横向项目(校企合作)&nbsp;&gt;&nbsp;个人&nbsp;DIY项目。如果只有个人&nbsp;DIY&nbsp;的项目,没有更多可以写的,一定要把项目最后一公里走完,就是把项目部署到线上,用腾讯云免费的&nbsp;EdgeOne&nbsp;Pages(https://edgeone.ai/zh/products/pages),或者更加复杂的使用&nbsp;Cloudflare&nbsp;Worker。因为个人项目淘宝商城、仿网易云音乐等实在太多了,面试官早就不知道看了多少个,你自己弄一些动画效果或者优化项,如果可以部署体验,面试官可以很好的跟着你准备的东西走。如果你准备的项目他都没兴趣打开看一看的,随便问问,那么多半无了。第四优先级:【刷题】。刷题并不是不重要,而是这个不是几天可以快速解决的。一般来说有过ACM或者蓝桥杯经验的会好很多。我以前也是搞ACM的,有一点需要清楚面试做题上和大家刷题是不一样的。在别人盯着你,给你计时的情况下,还能冷静敲代码的人是很少的,一般需要有比赛经验。而且如果给你的题你没有准备到,多半没法现场思考解法的。特别是某些大厂还需要写完代码现场&nbsp;Accepted&nbsp;的,这真挺难的,建议大家早做准备。————这里补充一下八股面经和项目经历,一般有经验的面试官会结合起来一起问。这种情况下一定要去做项目部署、去引导话题,因为面试的大佬思维开始发散起来,在知识广度和深度上,校招生是很难跟得上,大家节奏一旦对不上多半要无。这里叫大家去部署项目就是让面试官玩起来,体验你的东西话题就聚焦了,如果强行不聚焦那么无了也就无了,说明对面要求就是特别高。这里叫用腾讯云的&nbsp;EdgeOne&nbsp;Pages部署是因为国内访问很快,如果你部署个项目卡得要死,面试官肯定问你优化或者网络相关的,也容易j。这里的优先级排序不是说重要性,在我看来都很重要,竞争这么激烈,一个没做好就无了。这里的优先级是一关一关过,简历排第一是因为简历没做好直接后面的都没了,无论你准备得多好。
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客企业服务