题解 | #3的倍数#

3的倍数

https://ac.nowcoder.com/acm/problem/54841

混牛币

3的倍数

题意

就是把给的数全部都连接起来,然后判断这个数是不是3的倍数。

思路:

题目很简单,由小学的知识 就知道,判断一个数是不是3的倍数,只需要判断每一位的和是不是3的倍数就行了。

当然不可能把每个数都分解,可以证明,从L ~ R的所有位数相加%3 ,就等于 L~R求和。

求和公式:

LR=(L+R)(RL+1)/2\sum _{L}^{R}=(L+R)*(R-L+1)/2

所以题目最后变成了判断(L+R)(L+R)(RL+1)(R-L+1) 是不是3的倍数。

code:

#include<iostream>
using namespace std;

int main(){
    int T;
    cin>>T;
    while(T--){
        long long l,r;//观察数据范围,1e18,肯定要做到O(1)
        cin>>l>>r;
        if((r+l)%3==0||(r-l+1)%3==0) puts("YES");
        else puts("NO");
    }
}
全部评论

相关推荐

比亚迪汽车新技术研究院 硬件工程师 总包21左右 硕士
点赞 评论 收藏
分享
头像
09-29 16:18
门头沟学院 Java
点赞 评论 收藏
分享
09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务