题目链接

解题思路:

容斥一下好久可以得到式子

\(\sum_{i=0}^{n}\sum_{j=0}^{n}(-1)^{i+j}C_n^iC_n^j(k-1)^{ni+nj-ij}k^{n^2-(ni+nj-ij)}\)复杂度是\(o(n^2logn)\)但是还能继续化简,

\(\sum_{i=0}^{n}\sum_{j=0}^{n}(-1)^{i+j}C_n^iC_n^j(k-1)^{ni+nj-ij}k^{n^2-(ni+nj-ij)}\)

\(=\sum_{i=0}^{n}(-1)^iC_n^i\sum_{j=0}^{n}(-1)^jC_n^j(k-1)^{(n-i)j+ni}k^{(n-j)(n-i)}\)

\(=\sum_{i=0}^{n}(-1)^iC_n^i(k-1)^{ni}\sum_{j=0}^{n}(-1)^jC_n^j(k-1)^{(n-i)j}k^{(n-j)(n-i)}\)

由二项式定理有

\(=\sum_{i=0}^{n}(-1)^iC_n^i(k-1)^{ni}[k^{n-i}-(k-1)^{n-i}]^n\)

\(=\sum_{i=0}^{n}(-1)^iC_n^i[k^{n-i}(k-1)^i-(k-1)^n]^n\)

就能愉快的\(O(nlogn)\)算出答案了

#include <bits/stdc++.h>
using namespace std;
/* freopen("k.in", "r", stdin);
freopen("k.out", "w", stdout); */
// clock_t c1 = clock();
// std::cerr << "Time:" << clock() - c1 <<"ms" << std::endl;
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#define de(a) cout << #a << " = " << a << endl
#define rep(i, a, n) for (int i = a; i <= n; i++)
#define per(i, a, n) for (int i = n; i >= a; i--)
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef vector<int, int> VII;
#define inf 0x3f3f3f3f
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll MAXN = 4e3 + 7;
const ll MAXM = 1e6 + 7;
const ll MOD = 1e9 + 7;
const double eps = 1e-6;
const double pi = acos(-1.0);
ll quick_pow(ll a, ll b)
{
ll ans = 1;
while (b)
{
if (b & 1)
ans = (1LL * ans * a) % MOD;
a = (1LL * a * a) % MOD;
b >>= 1;
}
return ans;
}
int c[305][305];
ll ksm1[305], ksm2[305];
int main()
{
ll n, k;
scanf("%lld%lld", &n, &k);
c[0][0] = 1;
c[1][0] = c[1][1] = 1;
for (int i = 2; i <= n; i++)
{
c[i][0] = 1;
for (int j = 1; j <= i; j++)
c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % MOD;
}
ksm1[0] = ksm2[0] = 1;
for (int i = 1; i <= n; i++)
ksm1[i] = (ksm1[i - 1] * k) % MOD, ksm2[i] = (ksm2[i - 1] * (k - 1)) % MOD;
ll ans = 0;
ll t = 1;
for (int i = 0; i <= n; i++)
{
ans += t * c[n][i] * quick_pow((ksm1[n - i] * ksm2[i] - ksm2[n]) % MOD, n) % MOD;
t *= -1;
ans %= MOD;
}
printf("%lld\n", (ans % MOD + MOD) % MOD);
return 0;
}

最新文章

  1. 配置文件(App.config文件)
  2. Android 手机卫士6--高级工具
  3. leetcode 145. Binary Tree Postorder Traversal ----- java
  4. php get传递数据
  5. 济南学习 Day1 T3 am
  6. C#基础知识回顾-- 反射(3)
  7. 常用meta整理【转载】
  8. Eclipse 配置SSH 详解
  9. MySQL linux二进制安装
  10. 安装Visual Studio 2013 中文社区版
  11. NOI2013 树的计数
  12. Centos下编译Linux内核
  13. x264 - open gop and closed gop
  14. codeforce vk cup2017
  15. css预处理器less和scss之less介绍(一)
  16. vue2.0 路由模式mode=&quot;history&quot;的作用
  17. SQL server 数据库中插入中文变???格式乱码的问题另一种容易忽略的情况(C#操作dapper)
  18. Buaa菜鸡从今天好好学打码,好好学数学,好好学英语,好好打篮球,好好锻炼,好好吃饭,好好... 好好找女朋友!
  19. 有关于并发中的死锁(Deadlock)、饥饿(Starvation)、活锁(Livelock)
  20. shell 生成MAC地址

热门文章

  1. web应用中web.xml文件的解释
  2. 在Linux中执行.sh脚本,异常/bin/sh^M
  3. 第二阶段:2.商业需求分析及BRD:6.商业需求文档2
  4. Kafka学习笔记(四)—— API使用
  5. 「CodeForces 476A」Dreamoon and Stairs
  6. 1047 编程团体赛 (20 分)C语言
  7. SpringCloudAlibaba通过jib插件打包发布到docker仓库
  8. vue开源Element UI表单设计及代码生成器
  9. PTC热敏电阻的应用
  10. Linux删除文件 清除缓存