BZOJ 3601: 一个人的数论
题目链接:www.lydsy.com/JudgeOnline/problem.php?id=3601
题意:
思路:
因此可以用高斯消元得到ai。
const int mod=1000000007;
const int N=111; i64 myPow(i64 x,i64 y)
{
if(y<0) return myPow(myPow(x,mod-2),-y);
i64 ans=1;
while(y)
{
if(y&1) ans=ans*x%mod;
x=x*x%mod;
y>>=1;
}
return ans;
} i64 a[N][N],pp[N];
int n,p; i64 A[N]; void init()
{
int i,j;
for(i=0;i<=p+1;i++)
{
pp[i]=myPow(i+1,p)+(i==0?0:pp[i-1]);
pp[i]%=mod;
a[i][p+2]=pp[i];
a[i][0]=1;
i64 pre=1;
for(j=1;j<=p+1;j++)
{
pre=pre*(i+1)%mod;
a[i][j]=pre;
}
}
int k;
for(i=0;i<=p+1;i++)
{
for(j=i;j<=p+1;j++) if(a[j][i]) break;
if(i!=j)
{
for(k=0;k<=p+2;k++) swap(a[i][k],a[j][k]);
}
for(j=0;j<=p+1;j++) if(j!=i&&a[j][i])
{
i64 tmp=a[j][i]*myPow(a[i][i],-1)%mod;
for(k=0;k<=p+2;k++) a[j][k]=(a[j][k]-tmp*a[i][k])%mod;
}
}
for(i=0;i<=p+1;i++)
{
A[i]=a[i][p+2]*myPow(a[i][i],-1)%mod;
}
} int d[1111][2]; int main()
{ scanf("%d%d",&p,&n);
init();
int i; for(i=1;i<=n;i++) scanf("%d%d",&d[i][0],&d[i][1]);
i64 ans=0;
for(i=0;i<=p+1;i++)
{
i64 tmp=1;
int j;
for(j=1;j<=n;j++)
{
tmp=tmp*myPow(d[j][0],(i64)d[j][1]*i)%mod;
tmp=tmp*(1-myPow(d[j][0],p-i))%mod;
}
ans+=A[i]*tmp%mod;
}
ans%=mod;
if(ans<0) ans+=mod;
printf("%lld\n",ans);
}
BZOJ 3601: 一个人的数论的更多相关文章
- BZOJ 3601 一个人的数论 ——莫比乌斯反演 高斯消元
http://www.cnblogs.com/jianglangcaijin/p/4033399.html ——lych_cys 我还是太菜了,考虑一个函数的值得时候,首先考虑是否积性函数,不行的话就 ...
- BZOJ 3601 一个人的数论 (拉格朗日插值+莫比乌斯反演)
题意 略 题解 orz Freopen的博客 CODE #pragma GCC optimize (3) #include <bits/stdc++.h> using namespace ...
- 【bzoj 3601】一个人的数论 (莫比乌斯反演+伯努利数)
题解: (吐槽:网上题解那个不严谨猜测真是没谁了……关键是还猜得辣么准……) 直接化简到求和那一段: $f_{d}(n)=\sum_{t|n}\mu(t)t^{d}\sum_{i=1}^{\frac{ ...
- 【BZOJ】【2219】数论之神
中国剩余定理+原根+扩展欧几里得+BSGS 题解:http://blog.csdn.net/regina8023/article/details/44863519 新技能get√: LL Get_yu ...
- Bzoj 3505: [Cqoi2014]数三角形 数论
3505: [Cqoi2014]数三角形 Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description
- bzoj 3834 [Poi2014]Solar Panels 数论分块
3834: [Poi2014]Solar Panels Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 367 Solved: 285[Submit] ...
- 「BZOJ 2440」完全平方数「数论分块」
题意 \(T\)组数据,每次询问第\(k\)个无平方因子的数(\(1\)不算平方因子),\(T\leq 50,k\leq 10^9\) 题解 \(k\)的范围很大,枚举肯定不行,也没什么奇妙性质,于是 ...
- bzoj 2242 [SDOI2011]计算器(数论知识)
Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给 ...
- bzoj 2226: [Spoj 5971] LCMSum 数论
2226: [Spoj 5971] LCMSum Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 578 Solved: 259[Submit][St ...
随机推荐
- oracle热备份
1:热备份: SHUTDOWN IMMEDIATE; STARTUP MOUNT; alter database archivelog; --ALTER SYSTEM SET LOG_ARCHIVE_ ...
- linux下调整音量大小
不得不说,在linux下整音频和视频真是不容易.在windows中自带了关于音频和视频的工具,在linux下要两眼一抹黑地使用命令进行操作. 主要还是在linux下没找到合适的gui的调整工具. 几番 ...
- Inside TSQL Querying - Chapter 1. Logical Query Processing
Logical Query Processing Phases Summary (8) SELECT (9) DISTINCT (11) <TOP_specification> <s ...
- SVN使用(一)
SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversion是什么? ...
- linux设备驱动归纳总结(三):2.字符型设备的操作open、close、read、write【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59417.html linux设备驱动归纳总结(三):2.字符型设备的操作open.close.rea ...
- spring 事件(Application Event)
spring 事件为bean 与 bean之间传递消息.一个bean处理完了希望其余一个接着处理.这时我们就需要其余的一个bean监听当前bean所发送的事件. spring事件使用步骤如下: 1.先 ...
- memcache缓存详解
这篇文章主要介绍了PHP中的Memcache,从Memcache简介开始,详细讲解了如Memcache和memcached的区别.PHP的 Memcache所有操作方法.每个操作方法的详细解释等,需要 ...
- 利用arcigs制作出 源解析要用的ASCII文件
准备:1.确定好模拟区域范围,精度,行列数 2.确定好源解析的城市规划 思路: 1.全国省级图+本地市县图-->合成一张区域图(联合) 合成之后,添加一个字段,一个数字类型字段 ...
- ios app的真机调试与发布配置
1.打开应用程序—>[钥匙串访问]—>[证书助理]—>[从证书办法机构请求证书] 2.在[用户电子邮件地址]填入apple账户用的邮箱,选择[存储到磁盘],点击[继续],会在 ...
- PHP中判断字符串是否含有中文
<?php /** * [1.测试一] * 当$str = '中文测试'; 时输出"全部是汉字";当$str = '中a文3测试'; 时输出"不全是汉字" ...