rt,感觉这题数据有点水
一开始我求phi函数写假了,如下:
#define For( i , j , k ) for( ll i = ( j ) ; i <= ( k ) ; ++ i )
ll prime[ maxn ] , cnt_prime , phi[ maxn ];
bool isprime[ maxn ];
inline void Prime( ll x ){
memset( isprime , true , sizeof( isprime ) );
isprime[ 0 ] = isprime[ 1 ] = false;
cnt_prime = 0;
For( i , 2 , x ){
if( isprime[ i ] ){
prime[ ++ cnt_prime ] = i;
phi[ i ] = i - 1;
}
For( j , 1 , cnt_prime ){
ll xx = i * prime[ j ];
if( xx > x ) break;
//这里漏写了个isprime[ xx ] = false;
if( i % prime[ j ] == 0 ){
phi[ xx ] = phi[ i ] * phi[ j ];
//此处应该为phi[ xx ] = phi[ i ] * prime[ j ];
break;
}
phi[ xx ] = phi[ i ] * ( phi[ j ] - 1 );
//此处应该为phi[ xx ] = phi[ i ] * ( prime[ j ] - 1 );
}
}
return ;
}
但还是始终re/wa一个点,得91分。
请求加强数据。