bzoj 2137: submultiple

Time Limit: 10 Sec  Memory Limit: 259 MB
Submit: 239  Solved: 113
[Submit][Status][Discuss]

Description

设函数g(N)表示N的约数个数。现在给出一个数M,求出所有M的约数x的g(x)的K次方和。

Input

第一行输入N,K。N表示M由前N小的素数组成。接下来N行,第i+1行有一个正整数Pi,表示第Ai小的素数 有 Pi次。等式:

Output

输出一个数,表示答案。只需输出最后答案除以1000000007的余数。

Sample Input

2 3
1
3

Sample Output

900
【样例说明】
M=2^1*3^3=54
M的约数有1,2,3,6,9,18,27,54.约数个数分别为1,2,2,4,3,6,4,8.
Answer=1^3+2^3+2^3+4^3+3^3+6^3+4^3+8^3=900


编号 N K Pi<=
1 50 3 10000
2 50 100 10000
3 50 20101125 10000
4 999 17651851 100000
5 5000 836954247 100000
6 4687 1073741823 100000
7 4321 123456789 100000
8 5216 368756432 100000
9 8080 2^31-1 100000
10 10086 3 2^63-1
11 64970 3 2^63-1
12 71321 3 2^63-1
13 350 5 2^31-1
14 250 6 2^31-1
15 110 7 2^31-1
16 99 8 2^31-1
17 80 9 2^31-1
18 70 10 2^31-1
19 60 11 2^31-1
20 50 12 2^31-1


数据范围着实让人头大,,,前九个是一种算法,后11个是一种算法。
先推一下式子:
f(n)= (d|n)∑g(d)^k = πf(pi^ai)=π(g(1)^k+g(pi)^k+...+g(pi^ai)^k)
=π(∑(i=1 to ai+1)i^k)

对数据分治ai小的暴力算出x^k的前缀和,大的高斯消元算出系数再套公式。
至于高斯消元:
先得出 a0+a1*x+a2*x^2+...a(k+1)*x^(k+1)=1^k+2^k+...+x^k,同理可得:
a0+a1*(x+1)+a2*(x+1)^2+...a(k+1)*(x+1)^(k+1)=1^k+...+x^k+(x+1)^k
下式减上式可得:a0*0+a1*(x+1-1)+a2*((x+1)^2-x^2)+....+a(k+1)*((x+1)^(k+1)-x^(k+1))=(x+1)^k
不难发现a0=0(用手指头想想也知道不会带一个常数的,因为0的多少次方都为0),所以带k+1个等式消元就可以把a1-ak+1求出来啦。
再之后就是套公式环节,注意是求(ai +1)的k次方前缀和。
#include<bits/stdc++.h>
#define ll long long
#define maxn 100005
#define ha 1000000007
using namespace std;
ll a[maxn],n,k,mx=0;
ll ans=1,ci[maxn];
ll b[20][20];inline ll ksm(ll x,ll y){ll an=1;for(;y;y>>=1,x=x*x%ha) if(y&1) an=an*x%ha;return an;
}inline void work(){mx++; ll now=1;for(int i=1;i<=mx;i++){ci[i]=ci[i-1]+ksm(i,k);if(ci[i]>=ha) ci[i]-=ha;}for(int i=1;i<=n;i++){now=now*ci[a[i]+1]%ha;}printf("%lld\n",now);
}inline void solve(){ll len=k+1,now,pre;for(int i=1;i<=len;i++){now=pre=1;for(int j=1;j<=len;j++){now=now*(i+1)%ha;pre=pre*i%ha;if(j==k) b[i][len+1]=now;b[i][j]=(now-pre+ha)%ha;}}for(int i=1;i<=len;i++){if(!b[i][i]){for(int j=i+1;j<=len;j++) if(b[j][i]){for(int l=1;l<=len+1;l++) swap(b[j][l],b[i][l]);break;}}for(int j=i+1;j<=len;j++) if(b[j][i]){ll A=b[i][i],B=b[j][i],C=A/B;while(B){C=A/B;for(int l=i;l<=len+1;l++) b[i][l]=(b[i][l]-C*b[j][l]+ha)%ha;for(int l=i;l<=len+1;l++) swap(b[i][l],b[j][l]);A=b[i][i],B=b[j][i];}}}for(int i=len;i;i--){ll w=b[i][len+1];for(int j=i+1;j<=len;j++) w=(w-b[j][j]*b[i][j]%ha+ha)%ha;b[i][i]=w*ksm(b[i][i],ha-2)%ha;}for(int i=1;i<=n;i++){ll tot=0,now=a[i]%ha+1;for(int j=1;j<=len;j++,now=now*((a[i])%ha+1)%ha) tot=(tot+b[j][j]*now)%ha;ans=ans*tot%ha;}printf("%lld\n",ans);
}int main(){scanf("%lld%lld",&n,&k);for(int i=1;i<=n;i++){scanf("%lld",a+i);mx=max(mx,a[i]);}if(mx<=100000){work();return 0;}solve();return 0;
}

 

转载于:https://www.cnblogs.com/JYYHH/p/8231721.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java垃圾收集蒸馏

串行&#xff0c;并行&#xff0c;并发&#xff0c;CMS&#xff0c;G1&#xff0c;Young Gen&#xff0c;New Gen&#xff0c;Old Gen&#xff0c;Perm Gen&#xff0c;Eden&#xff0c;Tenured&#xff0c;Survivor Spaces&#xff0c;Safepoints和数百个JVM启动标志。 在尝试…

设计模式(二)模板方法模式

1.模版方法模式简介 模版方法模式介绍 在软件开发中&#xff0c;有时会遇到类似的情况&#xff0c;某个方法的实现需要多个步骤&#xff0c;其中有些步骤是固定的&#xff0c;而有些步骤并不固定&#xff0c;存在可变性。为了提高代码的复用性和系统的灵活性&#xff0c;可以…

命令行程序

1 package com.jdk7.chapter1;2 3 /**4 * 命令行程序5 * author celineluo6 *7 */8 public class CommandArgs {9 /** 10 * 调用系统错误方法打印错误信息 11 * 调用exit()关闭java虚拟机&#xff0c;0表示正常退出应用程序&#xff0c;其他值表示异常退出应…

题解 P2598 【[ZJOI2009]狼和羊的故事】

P2598 [ZJOI2009]狼和羊的故事 题目描述 “狼爱上羊啊爱的疯狂&#xff0c;谁让他们真爱了一场&#xff1b;狼爱上羊啊并不荒唐&#xff0c;他们说有爱就有方向&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;” Orez听到这首歌&#xff0c;心想&am…

Spring Data Solr教程:排序

当我们实现单词搜索功能时&#xff0c;我们通常希望通过使用每个搜索结果的相关性以降序对搜索结果进行排序。 这也是Solr的默认行为。 但是&#xff0c;在某些情况下&#xff0c;有必要手动指定排序顺序。 一种此类情况是“常规”搜索功能的实现&#xff0c;该功能已在我的Sp…

浅谈Java中的hashcode方法

浅谈Java中的hashcode方法 哈希表这个数据结构想必大多数人都不陌生&#xff0c;而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法: 1public native int hashCode();根据这个方法的声明可知&#xff0c;该方法返回一个int类型的数值&#xff0c;并…

前端机试面试题

一、题目要求 1、请实现“https://channel.jd.com/fashion.html”超值购部分内容。 2、使用CSS DIV实现页面布局&#xff0c;页面居中&#xff0c;文字颜色效果要求一致。40分 3、鼠标悬停时的动画效果。10分 4、“进入查看”标签与样式。10分 5、定义一个javascript数组&…

三分大法好

三分算法解决凸形或者凹形函数的极值&#xff1b; 如下图 lmid (Left Right) / 2 rmid (lmid Right) / 2; 如果lmid靠近极值点&#xff0c;则Right rmid&#xff1b; 否则(即midmid靠近极值点)&#xff0c;则Left lmid; 例题的话在我的博客相关分类中找. 转载于:https://w…

java stopself_如何正确停止前台服务?

我不知道它是否正确,但在我的应用程序中,我正在停止前台服务,它可以工作。请检查代码private void stopForegroundService() {// Stop foreground service and remove the notification.stopForeground(true);// Stop the foreground service.stopSelf();}更新打电话给stopserv…

将内存消耗减少20倍

这将是另一个故事&#xff0c;与我们分享有关内存相关问题的最新经验。 该案例是从最近的客户支持案例中提取的&#xff0c;在该案例中&#xff0c;我们遇到了一个行为异常严重的应用程序&#xff0c;该应用程序因生产中的OutOfMemoryError消息而死亡。 在连接了Plumbr的情况下…

Flex 布局教程:实例篇

该教程整理自 阮一峰Flexible教程 今天介绍常见布局的Flex写法。你会看到&#xff0c;不管是什么布局&#xff0c;Flex往往都可以几行命令搞定。 我的主要参考资料是Landon Schropp的文章和Solved by Flexbox。 一、骰子的布局 骰子的一面&#xff0c;最多可以放置9个点。 下面…

在Windows运行Python程序

在Windows运行Python程序 转载于:https://www.cnblogs.com/macT/p/9289091.html

基于java的网上花店销售系统_基于web的花店销售系统的设计与实现

基于web的花店销售系统的设计与实现(论文13000字)摘要&#xff1a;本系统是一个相对简单的基本应用系统&#xff0c;主要满足传统的花店运营需要&#xff0c;将自己的销售渠道扩展到网上&#xff0c;通过简单的管理&#xff0c;提供给最终消费者产品的展现、购物、订单处理等实…

mysql安装及一些配置

apt-get updateapt-get install mysql-server$mysql -u root#修改密码root密码为123456mysql> GRANT ALL PRIVILEGES ON *.* TO rootlocalhost IDENTIFIED BY "123456";#创建数据库xxxmysql>CREATE DATABASE xxx;#创建一个账户 xxx_root对数据库xxx有全部权限&…

Apache Server和JMeter调试

我一直在使用JMeter为生产服务器生成负载以测试我的应用程序。 该测试计划具有13个以上的HTTP采样器以发出不同的请求&#xff0c;并具有一个正则表达式提取器以从响应中提取一些值。 此值在连续的HTTP Sampler中使用。 这个测试用例简单而直接。 最初&#xff0c;我使用200个J…

Flexible 弹性盒子模型之flex

实例 让所有弹性盒模型对象的子元素都有相同的长度&#xff0c;忽略它们内部的内容&#xff1a; #main div{flex:1;} 复制 效果预览 浏览器支持 表格中的数字表示支持该属性的第一个浏览器的版本号。 紧跟在 -webkit-, -ms- 或 -moz- 后的数字为支持该前缀属性的第一个版本。 …

java冒泡遍历对象_Java经典排序算法(冒泡、选择、插入)

排序算法说明排序说明对一序列对象根据某个关键字进行排序。术语说明稳定&#xff1a;如果a原本在b前面&#xff0c;而ab&#xff0c;排序之后a仍然在b的前面&#xff1b;不稳定&#xff1a;如果a原本在b的前面&#xff0c;而ab&#xff0c;排序之后a可能会出现在b的后面&#…

create your own github repository and build link to your local project

1. create a repository in you github.  i.e. repository name: spring5_exercise 2. initial git profile in your local project root directory. echo "# spring5_exercise" >> README.md git init git add README.md git commit -m "first commit&…

快速分类–三向和双枢轴

毫无疑问&#xff0c;Quicksort被认为是本世纪最重要的算法之一&#xff0c;并且它是许多语言&#xff08;包括Java中的Arrays.sort &#xff09;的事实上的系统排序。 那么&#xff0c;quicksort有何新功能&#xff1f; 嗯&#xff0c;除了我现在&#xff08;在Java 7发行了2…

mysql workbench启动_怎么启动mysql workbench

答&#xff1a;你好&#xff0c;方法/步骤 如下&#xff1a; 双击或右键打开MySQL Workbench&#xff0c;进入软件主界面。 点击new connection,会有个弹出框&#xff0c;让我们填写user(用户名)&#xff0c;password(密码)。 填写完用户名和密码&#xff0c;点击确定就会出现我…