bzoj3561DZY Loves Math VI

3561: DZY Loves Math VI

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 503  Solved: 333
[Submit][Status][Discuss]

Description

给定正整数n,m。求

Input

一行两个整数n,m。

Output

一个整数,为答案模1000000007后的值。

Sample Input

5 4

Sample Output

424

HINT

数据规模:

1<=n,m<=500000,共有3组数据。

Source

By Jcvb

莫比乌斯反演
http://blog.csdn.net/lych_cys/article/details/50721642?locationNum=1&fps=1

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 #define mod 1000000007
 4 #define N 500001
 5 using namespace std;
 6 int n,m,cnt,mo[N],p[N>>1],vis[N];ll a[N],sum[N],ans;
 7 void predeal(){
 8     mo[1]=1;
 9     for(int i=2;i<N;i++){
10         if(!vis[i]){mo[i]=-1;p[++cnt]=i;}
11         for(int j=1;j<=cnt&&i*p[j]<N;++j){
12             vis[i*p[j]]=1;
13             if(i%p[j])mo[i*p[j]]=-mo[i];
14             else{mo[i*p[j]]=0;break;}
15         }
16     }
17 }
18 int quick(int a,int b){
19     int ret=1;
20     while(b){
21         if(b&1)ret=1ll*a*ret%mod;
22         a=1ll*a*a%mod;b>>=1;
23     }
24     return ret;
25 }
26 int main(){
27     scanf("%d%d",&n,&m);predeal();if(n>m)swap(n,m);
28     for(int i=1;i<N;i++)a[i]=1;
29     for(int i=1;i<=n;i++){
30         ll res=0;
31         for(int j=1;j*i<=m;++j)
32         a[j]=a[j]*j%mod,sum[j]=(sum[j-1]+a[j])%mod;
33         for(int j=1;j*i<=n;++j)
34         if(mo[j])res=(res+mo[j]*a[j]*a[j]%mod*sum[n/i/j]%mod*sum[m/i/j]%mod)%mod;
35         ans=(ans+res*quick(i,i)%mod)%mod;
36     }
37     ans<0?ans+=mod:1;printf("%lld\n",ans);
38     return 0;
39 }

原文地址:https://www.cnblogs.com/wsy01/p/8324707.html

时间: 2024-10-14 08:24:40

bzoj3561DZY Loves Math VI的相关文章

DZY Loves Math VI

Description 给定正整数n,m.求 \[\sum\limits_{i=1}^n\sum\limits_{j=1}^mlcm(i,j)^{gcd(i,j)}\] Input 一行两个整数n,m. Output 一个整数,为答案模1000000007后的值. Sample Input 5 4 Sample Output 424 HINT 数据规模: 1<=n,m<=500000,共有3组数据. 首先推柿子 \[\sum\limits_{i=1}^n\sum\limits_{j=1}^ml

HDU 5675 ztr loves math

ztr loves math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 896    Accepted Submission(s): 347 Problem Description ztr loves research Math.One day,He thought about the "Lower Edition" of

hdu-5675 ztr loves math(数学)

题目链接: ztr loves math Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) 问题描述 ztr喜欢研究数学,一天,他在思考直角三角形方程组的Lower版,即n=x^{2}-y^{2}n=x?2??−y?2??,他想知道,对于给出的n,是否会有正整数解. 输入描述 有T组数据,第一行为一个正整数T(T<=10^{6})T(T<=10?6??),每一行一个正整数n,n &l

【BZOJ】3309: DZY Loves Math 莫比乌斯反演优化

3309: DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b,求sigma(sigma(f(gcd(i,j)))) (i=1..a, j=1..b). Input 第一行一个数T,表示询问数. 接下来T行,每行两个数a,b,表示一个询问. Output 对于每一个询问,输出一行一个非负整数作为回答. Sample In

[BZOJ3568]DZY Loves Math VII

本人BZOJ的处女作. 这题题面还是蛮有趣的吧. 然后三个问题都蛮有意思的. 要保证正确性,出数据还是异常蛋疼啊. 本来各出三题的.但是考虑到是OJ上的题,就搞在一起了.这样代码量就会比较大. [BZOJ3568]DZY Loves Math VII,布布扣,bubuko.com

【BZOJ 3560】 3560: DZY Loves Math V (欧拉函数)

3560: DZY Loves Math V Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 241  Solved: 133 Description 给定n个正整数a1,a2,-,an,求 的值(答案模10^9+7). Input 第一行一个正整数n. 接下来n行,每行一个正整数,分别为a1,a2,-,an. Output 仅一行答案. Sample Input 3 6 10 15 Sample Output 1595 HINT 1<=n<=1

bzoj 3309 DZY Loves Math

LINK:DZY Loves Math 一道比较有意思的数论题 原谅我的智障多调了40min. 可以简单的推式子推出 答案为\(\sum{w=1}^n\frac{n}{w}\frac{m}{w}\sum{x|w}\mu(x)f(\frac{w}{x})\) f函数定义和题目中一致. 考虑后面前缀和怎么求 发现光求f(x)复杂度都比较高.如果我们把f(x)求出再调和级数预处理 那得GG 1e7过不了log+根号 考虑考虑一下\(\mu\)和f的这种形式肯定值有局限 设后面的东西为g(x) 不难发现

hdu 5675 ztr loves math(数学技巧)

Problem Description ztr loves research Math.One day,He thought about the "Lower Edition" of triangle equation set.Such as n=x2−y2. He wanted to know that ,for a given number n,is there a positive integer solutions? Input There are T test cases.

【HDOJ】5657 CA Loves Math

1. 题目描述对于给定的$a, n, mod, a \in [2,11], n \in [0, 10^9], mod \in [1, 10^9]$求出在$[1, a^n]$内的所有$a$进制下的数并且不含重复数字. 2. 基本思路这题比赛的时候,没人做出来,但是基本思路大家都有.显然可以直接将$n$改写为$\min(n,a)$.我比赛的代码TLE,思路是这样的:首先$mod$很小时,可以数位DP解:当$mod$很大时,可以先找到所有的排列然后,然后令$delta = fact(a)/fact(a