fork download
  1. /** mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm **\
  2.   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3.   * *
  4.   * Code by : deH *
  5.   * ~ILS~ *
  6.   * just a little star *
  7.   * *
  8.   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  9. \** mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm **/
  10. #include <bits/stdc++.h>
  11. #define ll long long
  12. #define f first
  13. #define s second
  14. const ll mod = 1000000007;
  15. using namespace std;
  16. ll dem;
  17. ll f[1000005];
  18. ll nad(ll a,ll b){
  19. if(b == 0)return 1;
  20. if(b == 1)return a%mod;
  21. ll k = nad(a,b/2)%mod;
  22. if(b % 2 == 0)return (k*k)%mod;
  23. else return ((k*k)%mod*a)%mod;
  24. }
  25. ll b[1000005];
  26. int main()
  27. {
  28. ios_base::sync_with_stdio(0);
  29. cin.tie(0);cout.tie(0);
  30. if(fopen("deH.INP","r")){
  31. freopen("deH.INP","r",stdin);
  32. freopen("deH.OUT","w",stdout);
  33. }
  34. int n;cin >> n;
  35. f[0] = 1;
  36. for(int i = 1;i <= n;i++){
  37. f[i] = f[i-1]*i;
  38. f[i] %= mod;
  39. }
  40. for(int i = 0;i <= n;i++){
  41. ll kx = (f[i]*f[n-i])%mod;
  42. kx = nad(kx,mod-2);
  43. kx *= f[n];
  44. kx %= mod;
  45. //kx là chap i cua n
  46. ll kz = nad(2,n-i);
  47. kz *= f[n-i];
  48. kz = nad(kz,mod-2);
  49. kz *= f[2*(n-i)]%mod;
  50. if(i % 2 == 0){
  51. dem += (kx*kz)%mod;
  52. dem %= mod;
  53. }
  54. else{
  55. dem -= (kx*kz)%mod;
  56. dem = (dem+mod)%mod;
  57. }
  58. dem %= mod;
  59. }
  60. cout << dem%mod;
  61. return 0;
  62. }
  63. /** that's all **/
Success #stdin #stdout 0.03s 5724KB
stdin
Standard input is empty
stdout
973249743