题意:
给你两个正整数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;
}