因为只有1,2,3,4,且组成的等差数列长度不小于3,那么非常数数列是可数的,且每个非常数数列最多会有两个,因为每三个非常数数列可以转换为非常数数列,而剩下的每一项只要等于0或者大于等于3,就可以组成序列
代码如下:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int a1 , a2 , a3 , a4;
bool check ( int i , int j , int k )
{
int temp[4] = { a1 - i - k ,
a2 - i - j - k,
a3 - i - j - k,
a4 - j - k };
for ( int i = 0 ; i < 4 ; i++ )
if ( temp[i] != 0 )
if ( temp[i] < 3 ) return false;
return true;
}
bool judge ( )
{
for ( int i = 0 ; i < 3 ; i++ )
for ( int j = 0 ; j < 3 ; j++ )
for ( int k = 0 ; k < 3 ; k++ )
{
if ( check ( i , j , k ) ) return true;
}
return false;
}
int main ( )
{
int t;
scanf ( "%d" , &t );
while ( t-- )
{
scanf ( "%d%d%d%d" ,&a1, &a2 ,&a3 ,&a4 );
if ( !a1 && !a2 && !a3 && !a4 ) puts( "Yes" );
else if ( judge ())
puts ( "Yes" );
else puts ( "No" );
}
}