Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <set>
  4. #include <map>
  5. #include <vector>
  6. #include <string>
  7. #include <cstring>
  8. #include <algorithm>
  9. #include <memory.h>
  10. #include <utility>
  11. #include <cmath>
  12. #include <cassert>
  13. using namespace std;
  14.  
  15. #define forn( i,n ) for ( int i=0; i<(int)(n); i++ )
  16. #define pb push_back
  17. #define mp make_pair
  18. #define sz(a) (int)((a).size())
  19. typedef long long ll;
  20. typedef long double ld;
  21. typedef pair<int,int> pii;
  22.  
  23. struct deg {
  24.   int k,a,x;
  25. } a[500000];
  26. int i,j,n,m,l,r,h,x,s,R[5000000][4];
  27.  
  28. bool cmp(deg ai, deg aj) {
  29.   if (ai.k!=aj.k) return ai.k<aj.k;
  30.   if (ai.a!=aj.a) return ai.a<aj.a;
  31.   return ai.x<aj.x;
  32. }
  33.  
  34. int main()
  35. {
  36.   scanf("%d",&n);
  37.   for (i=2; i*i<=n; i++) {
  38.     ll z=i*i;
  39.     for (j=2; z<=n; j++) {
  40.       a[m].k=int(z);
  41.       a[m].a=i;
  42.       a[m++].x=j;
  43.       z*=i;
  44.     }
  45.   }
  46.   sort(a,a+m,cmp);
  47. //  for (i=0; i<m; i++) printf("%d: %d %d (%d)\n",i,a[i].a,a[i].x,a[i].k);
  48.   for (i=0; i<m; i++) {
  49.     x=n-a[i].k; l=0; r=i;
  50.     while (l<r) {
  51.       h=(l+r)/2;
  52.       if (a[h].k<x) l=h+1; else r=h;
  53.     }
  54.     for (j=r; j<=i && a[j].k==x && (a[j].a<a[i].a || (a[j].a==a[i].a && a[j].x<=a[i].x)); j++) {
  55.       R[s][0]=a[i].a; R[s][1]=a[i].x;
  56.       R[s][2]=a[j].a; R[s][3]=a[j].x; s++;
  57.     }
  58.   }
  59.   printf("%d\n",s);
  60.   for (i=0; i<s; i++) printf("%d %d %d %d\n",R[i][0],R[i][1],R[i][2],R[i][3]);
  61.   return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement