fork download
  1. import math
  2. def find(u, par):
  3.  
  4. if par[u] != u:
  5. par[u] = find(par[u], par)
  6. return par[u]
  7.  
  8. def union(u, v, par, size):
  9. u_root = find(u, par)
  10. v_root = find(v, par)
  11.  
  12. if u_root == v_root:
  13. return
  14.  
  15.  
  16. if size[u_root] < size[v_root]:
  17. par[u_root] = v_root
  18. size[v_root] += size[u_root]
  19. else:
  20. par[v_root] = u_root
  21. size[u_root] += size[v_root]
  22.  
  23. def ip():
  24. return map(int,input().split())
  25.  
  26.  
  27.  
  28.  
  29. T=1
  30. T=int(input())
  31. for __ in range(T):
  32. n=int(input())
  33. lst=list(ip())
  34.  
  35. if n==1:
  36. print("yes")
  37. continue
  38.  
  39. if (n*(lst[1]-lst[0])+lst[0]) %(n+1)!=0:
  40. print("no")
  41. continue
  42.  
  43. k1=(n*(lst[1]-lst[0])+lst[0])//(n+1)
  44.  
  45. if (2*lst[0]-lst[1])%(n+1)!=0:
  46. print("no")
  47. continue
  48.  
  49. k2=(2*lst[0]-lst[1])//(n+1)
  50.  
  51. if k1<0 or k2<0:
  52. print("no")
  53. continue
  54. fg=True
  55. for i in range(2,n):
  56. if k1*(i+1)+k2*(n-(i+1)+1)!=lst[i]:
  57. fg=False
  58. break
  59.  
  60. if fg:
  61. print("yes")
  62. continue
  63. print("no")
Success #stdin #stdout 0.08s 14152KB
stdin
6
4
3 6 6 3
5
21 18 15 12 9
10
2 6 10 2 5 5 1 2 4 10
7
10 2 16 12 8 20 4
2
52 101
2
10 2
stdout
no
yes
no
no
yes
no