Advertisement
a53

PXP

a53
Feb 27th, 2017
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4. ifstream f("pxp.in");
  5. ofstream g("pxp.out");
  6.  
  7. unsigned long long n,i,j,x,y,t,u,c[101],d[1000],q[1000],m,nr,z,e,k;
  8. int a[1000001],b[1000001] ;
  9. char v[1000001] ;
  10.  
  11. int main()
  12. {
  13. f >> n >> e ;
  14. for ( i=0 ; i<=1000 ; i++ )
  15. for ( j=i ; j<=1000 ; j++ )
  16. {
  17. x = i*i + j*j ;
  18. if ( x<=1000000)
  19. {
  20. v[x] = 1 ;
  21. a[x] = i ;
  22. b[x] = j ;
  23. }
  24. }
  25. m = 0 ;
  26. nr = 0 ;
  27. for ( i=1 ; i<=n ; i++ )
  28. {
  29. f >> x ;
  30. if ( v[x]==1 )
  31. {
  32. nr++ ;
  33. if ( x!=1 )
  34. {
  35. m++ ;
  36. c[m] = x ;
  37. }
  38. }
  39. }
  40. if ( nr > m ) { m++ ; c[m] = 1 ;} ;
  41.  
  42. x = a[c[1]] ;
  43. y = b[c[1]] ;
  44. for ( i=2 ; i<=m ; i++ )
  45. {
  46. t = x*a[c[i]]+y*b[c[i]] ;
  47. if ( x*b[c[i]]>y*a[c[i]]) u = x*b[c[i]]-y*a[c[i]] ;
  48. else u = y*a[c[i]]-x*b[c[i]] ;
  49. x = t ;
  50. y = u ;
  51. }
  52. g << nr << "\n" ;
  53. if ( e==1 )
  54. {
  55. g << x << " " << y ;
  56. }
  57. if ( e==2 )
  58. {
  59. if ( x<y ){ t=x ; x=y ; y=t; }
  60. t = x-y ;
  61. u = x+y ;
  62. m = 0 ;
  63. while(t!=0)
  64. {
  65. m++ ;
  66. c[m] = t%10 ;
  67. t = t / 10 ;
  68. }
  69. t = 0 ;
  70. for ( i=1 ; i<=m ; i++ )
  71. {
  72. z = c[i] * u + t ;
  73. c[i] = z % 10 ;
  74. t = z / 10 ;
  75. }
  76. if ( t>0 ) g << t ;
  77. for ( i=m ; i>=1 ; i-- ) g << c[i] ;
  78. g << " " ;
  79. t = 2 * x ;
  80. u = y ;
  81. m = 0 ;
  82. while(t!=0)
  83. {
  84. m++ ;
  85. c[m] = t % 10 ;
  86. t = t / 10 ;
  87. }
  88. t = 0 ;
  89. for ( i=1 ; i<=m ; i++ )
  90. {
  91. z = c[i] * u + t ;
  92. c[i] = z % 10 ;
  93. t = z / 10 ;
  94. }
  95. if ( t>0 ) g << t ;
  96. for ( i=m ; i>=1 ; i-- ) g << c[i] ;
  97.  
  98. }
  99. if ( e==3 )
  100. {
  101. d[1] = 1 ;
  102. i = 1 ;
  103. for( j=1 ; j<=m ; j++ )
  104. {
  105. t = 0 ;
  106. for( k=1 ; k<=i ; k++ )
  107. {
  108. z = c[j] * d[k] + t ;
  109. d[k] = z % 10 ;
  110. t = z / 10 ;
  111. }
  112. while (t>0){i++ ; d[i]=t%10 ; t=t/10;}
  113. }
  114. t = 0 ;
  115. for ( j=1 ; j<=i ; j++ )
  116. {
  117. z = d[j] * x + t ;
  118. q[j] = z % 10 ;
  119. t = z / 10 ;
  120. }
  121. if ( t>0 ) g << t ;
  122. for( j=i ; j>=1 ; j-- ) g << q[j] ;
  123. g << " " ;
  124. t = 0 ;
  125. for ( j=1 ; j<=i ; j++ )
  126. {
  127. z = d[j] * y + t ;
  128. q[j] = z % 10 ;
  129. t = z / 10 ;
  130. }
  131. if ( t>0 ) g << t ;
  132. for( j=i ; j>=1 ; j-- ) g << q[j] ;
  133. }
  134. return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement