(1) : 원소들의 끝자리가 0또는 5인 경우 : 5인 애들에 연산 한 번 써서 다 0으로 맞추고 모두 동일한지 확인.

(2) : 원소들의 끝자리가 0도 아니고 5도 아닌 경우 : 항상 사이클이 발생하고 주기가 20이기 때문에 

적당히 끝자리 전부 2로 맞추고 원소끼리 차이값 20의 배수인지 확인

(3) : (1)과 (2)가 공존하면 불가능


  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef pair<ll,ll> pi;
  5. int arr[200005];
  6. void solve(){
  7. int n; cin>>n;
  8. bool A = 0,B = 0;
  9. for(int i=1; i<=n; i++){
  10. cin>>arr[i];
  11. if(arr[i]%10 == 0 || arr[i]%10 == 5) A = 1;
  12. else B = 1;
  13. }
  14. if(A&B) cout<<"NO"<<'\n';
  15. else{
  16. if(A){
  17. for(int i=1; i<=n; i++){
  18. while(arr[i]%10) arr[i]+=arr[i]%10;
  19. if(arr[i]!=arr[1]){
  20. cout<<"NO"<<'\n';
  21. return;
  22. }
  23. }
  24. }
  25. if(B){
  26. for(int i=1; i<=n; i++){
  27. while(arr[i]%10 != 2) arr[i]+=arr[i]%10;
  28. if((arr[i]-arr[1])%20){
  29. cout<<"NO"<<'\n';
  30. return;
  31. }
  32. }
  33. }
  34. cout<<"YES"<<'\n';
  35. }
  36. }
  37. int main(){
  38. ios_base::sync_with_stdio(false); cin.tie(NULL);
  39. int t; cin>>t;
  40. while(t--) solve();
  41. }