Advertisement
a53

p_a_l_i_d

a53
Jun 19th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. #include <iostream>
  2. #define Nmax 11
  3. #define MOD 1000000007
  4. using namespace std;
  5. int c[2][Nmax];
  6.  
  7. int P(int a,int b) /// a^b modulo (ridicare la putere logaritmic)
  8. {
  9. if(b==0)
  10. return 1;
  11. else
  12. if(b%2==0)
  13. return P((a*a)%MOD,b/2);
  14. else
  15. return a*P((a*a)%MOD,b/2)%MOD;
  16. }
  17.  
  18. void pdcomb(int n) /// Calculez combinarile dinamic si folosesc doar doua linii (0 si 1)
  19. {
  20. c[0][0]=c[1][0]=1; /// coloana 0
  21. for(int i=1;i<=n;++i)
  22. {
  23. for(int j=1;j<=i;++j)
  24. c[1][j]=(c[0][j]+c[0][j-1]); /// Calculez linia 1
  25. for(int k=0;k<=i;++k) /// Mut linia 1 in linia 0
  26. c[0][k]=c[1][k];
  27. }
  28. }
  29.  
  30. int main()
  31. {
  32. int n,m,k;
  33. unsigned long int C=0;
  34. cin>>n;
  35. pdcomb(n);
  36. while(n--)
  37. {
  38. cin>>m>>k;
  39. /// pdcomb(k);
  40. /* for(int i=0;i<=k;++i)
  41. {
  42. C=C+c[1][i]*P(k-2*i,m);
  43. if(C>=MOD)
  44. C=C%MOD;
  45. }
  46. cout<<C/(1<<(k-1))<<'\n';*/
  47. if(k==1)
  48. cout<<1<<'\n';
  49. else
  50. if(k==2)
  51. cout<<P(2,m-1)<<'\n';
  52. else
  53. {
  54. int DlaK=1<<(k-1);
  55. C=1ULL*((P(k,m)+DlaK-1)/DlaK)%MOD;
  56. cout<<C<<'\n';
  57. }
  58. }
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement