题意:

给你两个正整数L, R, 然后把L到R之间的数连起来形成一个新的数x。判断x是不是3的倍数。

解:

首先条件“是否为3的倍数”等价于“各数之和是否为3的倍数”

由此可以解:新数字的各位数之和为L到R之间所有数的和

转化为L到R之间所有数之和是否为3的倍数

利用等差数列求和公式(L+R) * (L+R-1)/2,即判断L+R或者个数L+R-1是否为3的倍数

#include<stdio.h>
int main()
{
    long T,L,R,num1,num2;
    scanf("%ld",&T);
    for(int n=1;n<=T;n++)
    {
        scanf("%ld%ld",&L,&R);
        num1=L+R;//首项加尾项
        num2=R-L+1;//等差数列的个数
        if(num1%3==0||num2%3==0)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}