8.29 字节笔试 第一题

来个大佬给讲一下这道题咋写啊,完全没有思路😭#字节笔试##字节跳动#
全部评论
同求大神讲解 用最蠢的方法蒙了50.。。
3 回复 分享
发布于 2021-08-29 12:15
(i的总和 > abs(两数之差)) && (i的总和 - abs(两数之差)) % 2 == 0 则可以
2 回复 分享
发布于 2021-08-29 12:20
#include <bits/stdc++.h> using namespace std; typedef long long LL; int main() {     int T; cin >> T;     while(T--) {         LL a, b; cin >> a >> b;         LL k = abs(a - b);         LL l = -1, r = 1e5;         while(l + 1 < r) {             LL mid = l + r >> 1;             if(mid*(mid+1)/2 <= k) {                 l = mid;             } else {                 r = mid;             }         }         while(l*(l+1)/2 < k || (l*(l+1)/2-k)&1) ++l;         cout << l << endl;     }     return 0; }
2 回复 分享
发布于 2021-08-29 12:41
利用奇偶性,给的数据不重要,a-b的差值的绝对值重要,结果是累加和刚好>=(a-b的差值的绝对值)的奇数或偶数,要做 一些条件判断,大体思路就这
1 回复 分享
发布于 2021-08-29 12:20
差值need = Math.max(a, b) - Math.min(a, b)。然后按序1,2,3...累加sum,直到满足sum - need >= 0 && (sum - need) % 2 == 0,就说明可以填充差值且可以将剩下的数字平分给两个数,让他们相等。
1 回复 分享
发布于 2021-08-29 12:21
这道题有规律,时间复杂度可以做到O(1)
点赞 回复 分享
发布于 2021-08-29 12:16
数学找规律吧,两个数的差值为 x, 从1,2,3,... n 的和为(n+1)*n/2 记为y,要让 y 满足 (y-x)%2 == 0, 因为需要填差值,并且让两者相等。暴力点就是让n 从1遍历到10^5,找到第一个满足的。优化的话使用二分查找,left=0,right=10^5
点赞 回复 分享
发布于 2021-08-29 12:22
用bfs 当成二叉树做,先求出两个数abs 然后定义level为0; 每遍历一层+1,出队后要么+level要么-level,出队后得出的值如果等于两个数绝对值则return level
点赞 回复 分享
发布于 2021-08-29 12:26
树状数组。。。。
点赞 回复 分享
发布于 2021-08-29 12:50
a b两个数字,假设a比较小,那么你就一直往a上加i,直到a-b的差为偶数
点赞 回复 分享
发布于 2021-08-29 14:45
第一题我的思路:1+2+3+4+.......>=abs(A-B)且(1+2+3+4+.......+abs(A-B))%2==0,全过
点赞 回复 分享
发布于 2021-08-30 11:06

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务