Advertisement
Guest User

Untitled

a guest
Jul 6th, 2020
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <time.h>
  4. #include <math.h>
  5.  
  6. #define BASE 1000000000ll
  7. #define N_BASE 9
  8.  
  9. void div(int *X,int size,int y) // X /= y;
  10. {
  11.         long long carry = 0;
  12.         for(int i = 0;i < size;i++)
  13.         {
  14.                 carry += X[i];
  15.                 X[i] = (long long)carry / y;
  16.                 carry = (carry % y) * BASE;
  17.         }
  18. }
  19. void mul(int *X,int size,int y) // X *= y;
  20. {
  21.         long long carry = 0;
  22.         for(int i = size;i >= 0;i--)
  23.         {
  24.                 carry += X[i]*((long long)y);
  25.                 X[i] = (int)(carry % BASE) ;
  26.                 carry /= BASE;
  27.         }
  28. }
  29. void write(int *X,int size)
  30. {
  31.         for(int i = 0;i < size;i++)
  32.         {
  33.                 printf("%09i",X[i]);
  34.         }
  35. }
  36. int main()
  37. {
  38.         int num;
  39.         scanf("%i",&num);
  40.         clock_t timer = clock();
  41.         int m = num/9 + 10;
  42.         int *X = (int*)malloc(sizeof(int)*m);
  43.         X[0] = BASE/10;
  44.         int max = (int)(3.35*num + 2);
  45.         for(int i = m - 1;i > 0;i--) X[i] = 0;
  46.         for(int i = max;i > 0;i--)
  47.         {
  48.                 if(i % (int)sqrt(max) == 0) printf("%i\n", i);
  49.                 div(X,m,2*i+1);
  50.                 mul(X,m,i);
  51.                 X[0] += BASE/10;
  52.         }
  53.         mul(X,m,2);
  54.         write(X,m - 10);
  55.         printf("\n\nTime = %.3f sec",(double)(clock() - timer)/1000.0 );
  56.         getchar();
  57.         getchar();
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement