首页 > 其他分享 >P4449 于神之怒加强版

P4449 于神之怒加强版

时间:2023-02-03 12:22:30浏览次数:40  
标签:lfloor 神之怒 right 加强版 P4449 sum rfloor ll left

于神之怒加强版

题意即求:

\[\sum _ {i =1} ^ {n} \sum _ { j = 1 } ^ {m} \gcd (i,j) ^ k \]

其中 \(k\) 是与数据组数一起给定的。

数据满足 \(T\le 2 \times 10 ^ 3\),\(n,m,k\le 5 \times 10 ^ 6\)。

直接推导:

\[\begin{aligned} & \sum _ {i =1} ^ {n} \sum _ { j = 1 } ^ {m} \gcd (i,j) ^ k \\ = & \sum _ {d = 1} \sum _ {i =1} ^ {n} \sum _ { j = 1 } ^ {m} \left[ \gcd (i,j) = d \right] d ^ k \\ = & \sum _ {d = 1} d ^ k \sum _ {i =1} ^ {\left\lfloor n / d\right \rfloor} \sum _ { j = 1 } ^ {\left\lfloor m / d\right \rfloor} \left[ \gcd (i,j) = 1 \right] \\ = & \sum _ {d = 1} d ^ k \sum _ {i =1} ^ {\left\lfloor n / d\right \rfloor} \sum _ { j = 1 } ^ {\left\lfloor m / d\right \rfloor} \sum _ {e \mid i , e \mid j} \mu (e) \\ = & \sum _ {d = 1} d ^ k \sum _ {e=1} \mu (e) \left\lfloor \dfrac{n}{de}\right \rfloor \left\lfloor \dfrac{m}{de}\right \rfloor \\ = & \sum _ {T=1} \sum _ {d \mid T} \mu \left(\dfrac{T}{d}\right) d ^ k \left\lfloor \dfrac{n}{T}\right \rfloor \left\lfloor \dfrac{m}{T}\right \rfloor \\ =& \sum _ {T=1} \left(\sum _ {d \mid T} \mu \left(\dfrac{T}{d}\right) d ^ k \right)\left\lfloor \dfrac{n}{T}\right \rfloor \left\lfloor \dfrac{m}{T}\right \rfloor \end{aligned} \]

括号内函数可以 \(O(n \ln n)\) 预处理出前缀和。

后面的是个整除分块。

时间复杂度 \(O(n\ln n + T\sqrt{n})\)。

代码:

#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
namespace Ehnaev{
  inline ll read() {
    ll ret=0,f=1;char ch=getchar();
    while(ch<48||ch>57) {if(ch==45) f=-f;ch=getchar();}
    while(ch>=48&&ch<=57) {ret=(ret<<3)+(ret<<1)+ch-48;ch=getchar();}
    return ret*f;
  }
  inline void write(ll x) {
    static char buf[22];static ll len=-1;
    if(x>=0) {do{buf[++len]=x%10+48;x/=10;}while(x);}
    else {do{buf[++len]=-(x%10)+48;x/=10;}while(x);}
    while(len>=0) putchar(buf[len--]);
  }
}using Ehnaev::read;using Ehnaev::write;
inline void writeln(ll x) {write(x);putchar(10);}

const ll mo=1e9+7,N=5e6;

ll T,k,n,m,cnt;
ll f[N+5],sf[N+5];
ll mu[N+5],prime[N+5];
bool ff[N+5];

inline ll Qpow(ll b,ll p) {
  ll r=1;while(p) {if(p&1) r=r*b%mo;b=b*b%mo;p>>=1;}return r;
}

inline void Init() {
  ff[1]=1;mu[1]=1;
  for(ll i=2;i<=N;i++) {
    if(!ff[i]) {prime[++cnt]=i;mu[i]=mo-1;}
    for(ll j=1;j<=cnt&&prime[j]*i<=N;j++) {
      ff[i*prime[j]]=1;
      if(i%prime[j]==0) {mu[i*prime[j]]=0;break;}
      mu[i*prime[j]]=mu[i]*(mo-1)%mo;
    }
  }
  for(ll i=1;i<=N;i++) {
    ll tmp=Qpow(i,k);
    for(ll j=i,c=1;j<=N;j+=i,c++) {f[j]=(f[j]+mu[c]*tmp%mo)%mo;}
  }
  for(ll i=1;i<=N;i++) {sf[i]=(sf[i-1]+f[i])%mo;}
}

int main() {

  T=read();k=read();Init();

  while(T--) {
    ll ans=0;
    n=read();m=read();
    for(ll i=1,j;i<=n&&i<=m;i=j+1) {
      j=min(n/(n/i),m/(m/i));
      ans=(ans+(((sf[j]-sf[i-1]+mo)%mo)*(n/i)%mo)*(m/i)%mo)%mo;
    }
    writeln(ans);
  }

  return 0;
}

标签:lfloor,神之怒,right,加强版,P4449,sum,rfloor,ll,left
From: https://www.cnblogs.com/Apolynth/p/17088735.html

相关文章

  • P2241 统计方形(数据加强版)(矩形中的正方,长方形统计)
    统计方形(数据加强版)题目背景1997年普及组第一题题目描述有一个\(n\timesm\)方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。输入格式一行,两个正整数\(......
  • 缩点 P2812 校园网络【[USACO]Network of Schools加强版】
    首先找出图中的强连通分量,用tarjan算法。强连通分量内部强联通,所以将其看成一个点是不影响的。进行缩点之后,整张图变成了一个有向无环图。首先对于每一条边进行检测,如果......
  • Luogu P2082 区间覆盖(加强版)
    链接难度:普及/提高-有\(n\)个区间\([s_i,t_i]\),求被这\(n\)个区间覆盖的长度。数据范围:\(n\le10^5,1\les_i<t_i\le10^17\)。把每个区间都换成一组匹配的括......
  • JS防抖函数加强版
    JS防抖函数加强版debounce(fn,wait=500,immediate=false){lettimer=nulllettimer2=nulllettimes=0returnfunction(...args){......
  • Java中for语句的加强版
    语法格式://语法格式for(声明语句:表达式){ //代码句子}声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数......
  • 21个Transformer面试题的简单回答 -- 加强版
    原文链接:https://jishuin.proginn.com/p/763bfbd565fc本文在原文基础框架上有增加,附上更详细或者正确的解答。1.Transformer为何使用多头注意力机制?(为什么不使用一个头)答......
  • P7883 平面最近点对(加强加强版)
    题目链接P7883平面最近点对(加强加强版)题目背景P1429平面最近点对(加强版)里最高赞题解写道:我们充分发扬人类智慧:将所有点全部绕原点旋转同一个角度,然后按\(x\)坐标......
  • 《大话设计模式 Java溢彩加强版》相关主题
    《大话设计模式Java溢彩加强版》读者须知     《大话设计模式Java溢彩加强版》在2022年10月在各大网上书店中有售!源代码与课件下载 《大话设计模式Java溢彩......
  • 做题记录整理数据结构1 P6033. [NOIP2004 提高组] 合并果子 加强版(2022/10/3)
    P6033.[NOIP2004提高组]合并果子加强版老题新做型里面最妙的就是用两个队列来代替一个堆,和蚯蚓那道题有异曲同工之妙#include<bits/stdc++.h>#definefor1(i,a,b)......
  • 三国志11威力加强版 for Mac(三国策略游戏)
    三国志11是一款十分经典的策略类游戏,三国志11威力加强版是《三国志11》的扩充强化版本,能够让已经体验过《三国志11》的玩家可以享受到更丰富的游戏内容。采用了气势滂沱的......