题解 | #3的倍数#

3的倍数

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

三的倍数判断条件:数位相加的和是否为三的倍数
证明:
abcabc
=a100+b10+c=a*100+b*10+c
=a99+b9+a+b+c=a*99+b*9+a+b+c
显然,a99+b9a*99+b*9是3的倍数,那么只需要判断a+b+ca+b+c是否是3的倍数即可
即:i=1n10i1xii=1nxi(mod\sum_{i = 1}^n{10^{i-1}*x_i}≡\sum_{i=1}^n{x_i}(mod 3)3)
所以我们将llrr的数字全部累加对三取余等价于根据题意组成的数字取余
因为我们可以将题意组成的数字写成llrr的数字乘10i10^i相加得到,然后将每个数字提出,前半部分会变成(10i1)aj(10^i-1)*a_j,显然这个数字是三的倍数,所以判断提取的数字和是否为三的倍数即可。
AC代码

#include <bits/stdc++.h>
using namespace std;
int main(void)
{
    int t;
    cin >> t;
    while (t--)
    {
        long long l, r;
        cin >> l >> r;
        if ((l + r) % 3 == 0 || (r - l + 1) % 3 == 0)
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }
}
全部评论
原来是这样!!
点赞 回复 分享
发布于 2023-01-15 11:19 广东

相关推荐

zhiyog:哈哈哈,其实是津巴布韦币
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务