题解 | #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");
    }
}
全部评论

相关推荐

05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务