Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- #include <time.h>
- #include <math.h>
- #define BASE 1000000000ll
- #define N_BASE 9
- void div(int *X,int size,int y) // X /= y;
- {
- long long carry = 0;
- for(int i = 0;i < size;i++)
- {
- carry += X[i];
- X[i] = (long long)carry / y;
- carry = (carry % y) * BASE;
- }
- }
- void mul(int *X,int size,int y) // X *= y;
- {
- long long carry = 0;
- for(int i = size;i >= 0;i--)
- {
- carry += X[i]*((long long)y);
- X[i] = (int)(carry % BASE) ;
- carry /= BASE;
- }
- }
- void write(int *X,int size)
- {
- for(int i = 0;i < size;i++)
- {
- printf("%09i",X[i]);
- }
- }
- int main()
- {
- int num;
- scanf("%i",&num);
- clock_t timer = clock();
- int m = num/9 + 10;
- int *X = (int*)malloc(sizeof(int)*m);
- X[0] = BASE/10;
- int max = (int)(3.35*num + 2);
- for(int i = m - 1;i > 0;i--) X[i] = 0;
- for(int i = max;i > 0;i--)
- {
- if(i % (int)sqrt(max) == 0) printf("%i\n", i);
- div(X,m,2*i+1);
- mul(X,m,i);
- X[0] += BASE/10;
- }
- mul(X,m,2);
- write(X,m - 10);
- printf("\n\nTime = %.3f sec",(double)(clock() - timer)/1000.0 );
- getchar();
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement