bzoj 4407 于神之怒加强版 (反演+线性筛)

2023-10-09 17:40

本文主要是介绍bzoj 4407 于神之怒加强版 (反演+线性筛),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

于神之怒加强版

Time Limit: 80 Sec  Memory Limit: 512 MB
Submit: 1184  Solved: 535
[Submit][Status][Discuss]

Description

给下N,M,K.求

 

Input

输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意义如上式所示。

 

Output

如题

 

Sample Input

1 2
3 3

Sample Output

20

HINT

 

1<=N,M,K<=5000000,1<=T<=2000


题解:JudgeOnline/upload/201603/4407.rar


 

 

Source

命题人:成都七中张耀楠,鸣谢excited上传。

 1 #include<bits/stdc++.h>
 2 #pragma GCC optimize(2)
 3 #pragma G++ optimize(2)
 4 #include<iostream>
 5 #include<algorithm>
 6 #include<cmath>
 7 #include<cstdio>
 8 #include<cstring>
 9 
10 #define ll long long
11 #define inf 1000000000
12 #define mod 1000000007
13 #define N 5000007
14 using namespace std;
15 inline int read()
16 {
17     int x=0,f=1;char ch=getchar();
18     while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
19     while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
20     return x*f;
21 }
22 
23 int F[N],f[N],flag[N],k,tot,p[N],ans;
24 inline int gpow(int x,int y)
25 {
26     int ans=1;
27     while (y)
28     {
29         if (y&1) ans=(ll)ans*x%mod;
30         y>>=1;x=(ll)x*x%mod;
31     }
32     return ans;
33 }
34 void preparation()
35 {
36     F[1]=1;
37     for (int i=2;i<N;i++)
38     {
39         if (!flag[i]){f[i]=gpow(i,k);F[i]=f[i]-1;p[++tot]=i;}
40         for (int j=1;j<=tot&&i*p[j]<N;j++)
41         {
42             flag[i*p[j]]=1;
43             if (i%p[j])F[i*p[j]]=(ll)F[i]*F[p[j]]%mod;
44             else{F[i*p[j]]=(ll)F[i]*f[p[j]]%mod;break;}
45         }
46     }
47     for (int i=1;i<N;i++) (F[i]+=F[i-1])%=mod;
48 }
49 int main()
50 {
51     int Case=read();k=read();
52     preparation();
53     while (Case--)
54     {
55         int n=read(),m=read();if (n>m) swap(n,m);ans=0;
56         for (int i=1,pos=0;i<=n;i=pos+1)
57         {
58             pos=min(n/(n/i),m/(m/i));
59             (ans+=1LL*(n/i)*(m/i)%mod*(F[pos]-F[i-1])%mod)%=mod;
60         }
61         printf("%d\n",(ans+mod)%mod);
62     }
63     return 0;
64 }

 

转载于:https://www.cnblogs.com/fengzhiyuan/p/8530939.html

这篇关于bzoj 4407 于神之怒加强版 (反演+线性筛)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/174504

相关文章

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

hdu6053 TrickGCD 莫比乌斯反演

TrickGCD Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Problem Description You are given an array  A  , and Zhu wants to know there are how many d

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^

【高等代数笔记】线性空间(一到四)

3. 线性空间 令 K n : = { ( a 1 , a 2 , . . . , a n ) ∣ a i ∈ K , i = 1 , 2 , . . . , n } \textbf{K}^{n}:=\{(a_{1},a_{2},...,a_{n})|a_{i}\in\textbf{K},i=1,2,...,n\} Kn:={(a1​,a2​,...,an​)∣ai​∈K,i=1,2,...,n

带头结点的线性链表的基本操作

持续了好久,终于有了这篇博客,链表的操作需要借助图像模型进行反复学习,这里尽可能的整理并记录下自己的思考,以备后面复习,和大家分享。需要说明的是,我们从实际应用角度出发重新定义了线性表。 一. 定义 从上一篇文章可以看到,由于链表在空间的合理利用上和插入、删除时不需要移动等优点,因此在很多场合下,它是线性表的首选存储结构。然而,它也存在某些实现的缺点,如求线性表的长度时不如顺序存储结构的

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

深度学习与大模型第3课:线性回归模型的构建与训练

文章目录 使用Python实现线性回归:从基础到scikit-learn1. 环境准备2. 数据准备和可视化3. 使用numpy实现线性回归4. 使用模型进行预测5. 可视化预测结果6. 使用scikit-learn实现线性回归7. 梯度下降法8. 随机梯度下降和小批量梯度下降9. 比较不同的梯度下降方法总结 使用Python实现线性回归:从基础到scikit-learn 线性

C#中的各种画刷, PathGradientBrush、线性渐变(LinearGradientBrush)和径向渐变的区别

在C#中,画刷(Brush)是用来填充图形(如形状或文本)内部区域的对象。在.NET框架中,画刷是System.Drawing命名空间的一部分,通常用于GDI+绘图操作。以下是一些常用的画刷类型: SolidBrush:用于创建单色填充的画刷。HatchBrush:用于创建具有图案填充的画刷。TextureBrush:用于创建具有图像纹理填充的画刷。LinearGradientBrush:用于创

(感知机-Perceptron)—有监督学习方法、非概率模型、判别模型、线性模型、参数化模型、批量学习、核方法

定义 假设输入空间(特征空间)是 χ \chi χ ⊆ R n \subseteq R^n ⊆Rn,输出空间是y = { + 1 , − 1 } =\{+1,-1 \} ={+1,−1} 。输入 x ∈ χ x \in \chi x∈χ表示实例的特征向量,对应于输入空间(特征空间)的点;输出 y ∈ y \in y∈y表示实例的类别。由输入空间到输出空间的如下函数: f ( x ) = s

逻辑回归与线性回归的目标函数和应用场景比较

概述 逻辑回归和线性回归是两种常用的预测模型,它们在目标函数和应用场景上存在显著差异。本文将详细比较这两种回归模型,并提供相应的代码示例。 线性回归 线性回归是一种预测连续数值的模型,其目标是找到特征( X )和目标变量( Y )之间的线性关系。线性回归的目标函数是最小化预测值和实际值之间的平方差,即均方误差(MSE)。 目标函数 线性回归的损失函数是均方误差: [ J(\theta)