Advertisement
a53

implementare

a53
Sep 19th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. #include <fstream>
  2. #define nmax 100001
  3. #define p 666013
  4. using namespace std;
  5. ifstream f("implementare.in");
  6. ofstream g("implementare.out");
  7. char v[nmax];
  8. long long w[nmax],nr=0,desc[nmax];
  9.  
  10. /// Ciurul lui Eratostene
  11. void ciur(int n)
  12. {
  13. int i,j;
  14. for(i=2;i<=n;++i)
  15. {
  16. if(v[i]==0)
  17. {
  18. w[++nr]=i;
  19. for(j=i+i;j<=n;j+=i)
  20. {
  21. v[j]=1;
  22. }
  23. }
  24. }
  25.  
  26. }
  27.  
  28. /// descompunere in factori primi a lui x! cu Legendre
  29. void dsc(int x,int op)
  30. {
  31. long long i,s,pp,ok;
  32.  
  33. for(i=1;i<=nr;++i)
  34. {
  35. s=0;pp=w[i];ok=1;
  36. while (ok)
  37. {
  38. s=s+x/pp;
  39. if(x/pp==0)
  40. ok=0;
  41. pp=pp*w[i];
  42. }
  43. if(op==1)
  44. desc[i]+=s;
  45. else
  46. desc[i]-=s;
  47. }
  48. }
  49.  
  50. int mdl(int prim)
  51. {
  52. long long i,j,pp=1,r=1;
  53. for(i=1;i<=nr;++i)
  54. {
  55. pp = 1;
  56. for(j=1;j<=desc[i];++j)
  57. pp=(pp*w[i])%prim;
  58.  
  59. r=(r*pp)%prim;
  60. }
  61. return r;
  62. }
  63.  
  64. int main()
  65. {
  66. int k,n;
  67. f>>k>>n;
  68. ciur(k+n);
  69. /// calculez combinari de n+k luate cate k-1
  70. dsc(n+k,1);
  71. dsc(n+1,0);
  72. dsc(k-1,0);
  73. /// recompun numarul modulo p
  74. g<<mdl(p)<<'\n';
  75. f.close();
  76. g.close();
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement