• Source
    1. #include <iostream>
    2. #include <vector>
    3. #include <algorithm>
    4. #include <math.h>
    5. using namespace std;
    6.  
    7. vector <long> v;
    8. void timUoc (long a)
    9. {
    10. if (sqrt(a)*sqrt(a)==a) v.push_back(sqrt(a));
    11. for (int i=1; i<sqrt (a); i++)
    12. {
    13. if (a%i==0)
    14. {
    15. v.push_back(i);
    16. v.push_back(a/i);
    17. }
    18. }
    19. }
    20.  
    21. int main ()
    22. {
    23. int t;
    24. cin>>t;
    25. int cs;
    26. int n;
    27. for (int k=1; k<=t; k++)
    28. {
    29.  
    30. cin>>cs>>n;
    31. long arr[10004];
    32. long S=0;
    33. long tg;
    34. arr[0]=0;
    35. for (int i=1; i<=n; i++)
    36. {
    37. cin>>tg;
    38. S+=tg;
    39. arr[i]=S;
    40. }
    41. long SMax=arr[n];
    42. timUoc (SMax);
    43. sort (v.begin(), v.end());
    44. int kt=0;
    45. long buocM;
    46. for (int i=0; i<v.size(); i++)
    47. {
    48. long tong=v[i];
    49. long buoc=SMax/tong;
    50. int kt2=1;
    51. int vtd=0;
    52. int dem=0;
    53. while (1)
    54. {
    55. int kt2=0;
    56. for (int j=vtd+1; j<=n; j++)
    57. {
    58. if ((arr[j]-arr[vtd])==tong)
    59. {
    60. kt2=1;
    61. vtd=j;
    62. dem++;
    63. break;
    64. }
    65. }
    66. if (kt2==0) break;
    67. }
    68. if (dem==buoc)
    69. {
    70. buocM=buoc;
    71. kt=1;
    72. break;
    73. }
    74. }
    75. cout<<cs<<" "<<SMax/buocM<<endl;
    76. v.clear();
    77. }
    78. return 0;
    79. }