博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ3288: Mato矩阵(欧拉函数 高斯消元)
阅读量:7205 次
发布时间:2019-06-29

本文共 1100 字,大约阅读时间需要 3 分钟。

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 386  Solved: 296
[][][]

Description

Mato同学最近正在研究一种矩阵,这种矩阵有n行n列第i行第j列的数为gcd(i,j)。
例如n=5时,矩阵如下:
1 1 1 1 1
1 2 1 2 1
1 1 3 1 1
1 2 1 4 1
1 1 1 1 5
Mato想知道这个矩阵的行列式的值,你能求出来吗?

Input

一个正整数n mod1000000007
n<=1000000

Output

n行n列的Mato矩阵的行列式。

Sample Input

5

Sample Output

16

HINT

 

Source

 

Orz PoPoQQQ

高斯消元之后发现对角线是欧拉函数。。

然后就做完了。

// luogu-judger-enable-o2#include
#include
#define LL long long using namespace std;const int MAXN = 1e7 + 10, mod = 1e9 + 7;int N;LL ans = 1;int prime[MAXN], tot, vis[MAXN], phi[MAXN];void GetPhi(int N) { phi[1] = 1; for(int i = 2; i <= N; i++) { if(!vis[i]) prime[++tot] = i, phi[i] = i - 1; for(int j = 1; j <= tot && i * prime[j] <= N; j++) { vis[i * prime[j]] = 1; if(i % prime[j] == 0) phi[i * prime[j]] = phi[i] * prime[j]; else phi[i * prime[j]] = phi[i] * phi[prime[j]]; } }}int main() { scanf("%d", &N); GetPhi(1e6 + 10); for(int i = 1; i <= N; i++) ans = (1ll * ans * phi[i]) % mod; printf("%lld", ans); return 0;}/*123 321*/

 

转载地址:http://sxoum.baihongyu.com/

你可能感兴趣的文章
IoC容器Autofac(2) - 一个简单示例(附demo源码)
查看>>
桥接模式 - 设计模式学习
查看>>
Google Maps Android API v2 (2)- 地图对象
查看>>
MySQL 5.5 手册下载
查看>>
hdu 1300(dp)
查看>>
POJ 1159 - Palindrome 优化空间LCS
查看>>
CH BR8(小学生放假了-clock()/CLOCKS_PER_SEC-斜率优化常错集锦)
查看>>
N!末尾有多少个零
查看>>
【优先队列】HDU 1873——看病找医生
查看>>
SQL 时间处理
查看>>
HF Reader
查看>>
eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法
查看>>
Css 常用属性
查看>>
GRIDVIEW多行多列合并单元格(合并列)
查看>>
sharepoint2010问卷调查(3)-实现问卷的开始和结束时间(采用自定义字段类型)...
查看>>
java final
查看>>
【吐槽】VS2012的安装项目只能用InstallShield Limited Edition
查看>>
win7重装系统时,使用PE工具箱进入系统看到的“C盘变成0.2G,D盘变成48G左右”这是什么回事?...
查看>>
JQuery URL的GET参数值获取方法
查看>>
关于Char* ,CString ,WCHAR*之间的转换问题
查看>>