洛谷3861八月月赛A题解
用f[i][j]表示乘积为i的,包含的最大数小于等于j时的方案总数
我们先考虑所用的数为1到n的情况
最后的答案就是f[n][n]-1
转移时考虑f[i][j]可以转移到的状态
显然f[i][j]可以转移到f[i*k][k](k>j),可以转移到f[i][k](k>j)
我们在考虑,可以发现只有i,j都为n的因数时才会对答案产生贡献
而1e12中因数最多的数有大约7000个因数,所以我们就可以愉快的O(7000^2)水过去了
# include<iostream>
# include<cstdio>
# include<cstring>
# include<cmath>
# include<algorithm>
using namespace std;
typedef long long LL;
const int mod = ;
const int mn = ;
LL f[mn][mn],a[mn],n;
int cnt,t;
void work(LL x)
{
LL m=sqrt(x*1.0);
for(int i=;i<=m;i++)
{
if(x%i==)
{
if(1ll*i*i==x)
a[++cnt]=i;
else {
a[++cnt]=i;
a[++cnt]=x/i;
}
}
}
sort(a+,a++cnt);
a[cnt+]=x+;//增加虚拟节点
f[][]=;
//printf("%d",cnt);
for(int i=;i<=cnt;i++)
{
int l=i+;
for(int j=;j<cnt;j++)
{
if(f[i][j]==) continue;
if(a[i]*a[j+]<=x)
{
while(a[l+]<=a[i]*a[j+]) l++;
if(a[l]==a[i]*a[j+])
f[l][j+]=(f[l][j+]+f[i][j])%mod;
}
f[i][j+]=(f[i][j+]+f[i][j])%mod;
}
}
}
int main()
{
scanf("%d",&t);
while(t--)
{
cnt=;
//memset(f,0,sizeof(f));
scanf("%lld",&n);
work(n);
printf("%lld\n",f[cnt][cnt]-);
if(t)
{
for(int i=;i<=cnt;i++)
for(int j=;j<=cnt;j++)
f[i][j]=;
}
}
return ;
}
洛谷3861八月月赛A题解的更多相关文章
- 【LGR-070】洛谷 3 月月赛-官方题解
本次免费为大家提供[LGR-070]洛谷 3 月月赛的官方题解,点个赞再走呗! 代码就不上了,大家可以到别的博客上去找找!希望这篇博客能对你有所帮助!
- 洛谷10月月赛II题解
[咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能 ...
- 洛谷3月月赛div2 题解(模拟+数学+贪心+数学)
由于本人太蒻了,div1的没有参加,胡乱写了写div2的代码就赶过来了. T1 苏联人 题目背景 题目名称是吸引你点进来的. 这是一道正常的题,和苏联没有任何关系. 题目描述 你在打 EE Round ...
- 【洛谷5月月赛】玩游戏(NTT,生成函数)
[洛谷5月月赛]玩游戏(NTT,生成函数) 题面 Luogu 题解 看一下要求的是什么东西 \((a_x+b_y)^i\)的期望.期望显然是所有答案和的平均数. 所以求出所有的答案就在乘一个逆元就好了 ...
- 「P4996」「洛谷11月月赛」 咕咕咕(数论
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- 「P4994」「洛谷11月月赛」 终于结束的起点(枚举
题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...
- 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心
题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi,地面的高度是 h_0 = 0 ...
- 洛谷4月月赛R2
洛谷4月月赛R2 打酱油... A.koishi的数学题 线性筛约数和就可以\(O(N)\)了... #include <iostream> #include <cstdio> ...
- 洛谷3月月赛 R1 Step! ZERO to ONE
洛谷3月月赛 R1 Step! ZERO to ONE 普及组难度 290.25/310滚粗 t1 10分的日语翻译题....太难了不会... t2 真·普及组.略 注意长为1的情况 #include ...
随机推荐
- 使用 jQuery 设置 disabled 属性与移除 disabled 属性
表单中readOnly和disabled的区别:Readonly只针对input(text/ password)和textarea有效,而disabled对于所有的表单元素都有效,包括select,r ...
- HBase OpenTSDB
- NVIDIA驱动安装、CUDA安装、cudnn安装
1.禁用 nouveau 驱动 sudo vim /etc/modprobe.d/nvidia-installer-disable-nouveau.conf 或者 sudo vim /etc/modp ...
- js中的对象、原型链机制、构造函数
一.在js中创建对象的方式 //一.字面量或直接量创建对象 var obj1 = { name:"zs", age:12 }; //二.通过new来创建对象 var obj2 = ...
- touch滑动事件---简单小案例
html: <!--导航栏头部--><div class="type_nav"> <ul class="clearfix " v- ...
- camtasia Studio 7 的使用
最近领导给了个任务,要把我们的三维应用功能做个视频,好带出去宣传.通过搜索,发现大家都说camtasia Studio好用,很快在网上找到了,与大家分享链接: http://pan.baidu.com ...
- 深入浅出 Java Concurrency (23): 并发容器 part 8 可阻塞的BlockingQueue (3)[转]
在Set中有一个排序的集合SortedSet,用来保存按照自然顺序排列的对象.Queue中同样引入了一个支持排序的FIFO模型. 并发队列与Queue简介 中介绍了,PriorityQueue和Pri ...
- 深入浅出 Java Concurrency (18): 并发容器 part 3 ConcurrentMap (3)[转]
在上一篇中介绍了HashMap的原理,这一节是ConcurrentMap的最后一节,所以会完整的介绍ConcurrentHashMap的实现. ConcurrentHashMap原理 在读写锁章节部分 ...
- MyISAM 与 innoDB 的选择
1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不 ...
- Matlab---length函数
1.length函数:计算向量或矩阵的长度 2.用法说明 y = length(x) 函数计算指定向量或矩阵的长度y.如果参数变量x是向量,则返回其长度:如果参数变量是非空矩阵,则length(x)与 ...