JZOJ 5348. 【NOIP2017提高A组模拟9.5】心灵治愈
题目大意
求 \(b\) (正整数集合)使得 \(\sum_{i=1}^{n+1} a_i \times b_i = 1\)
其中给定 \(b_{n+1}=m\) 且为 \(b\) 中最大值
\(1 \leq n,m \leq 10^{15}\)
解法
其实很简单
很容易想到 \(\gcd(b_1,b_2,...,b_{n+1}) = 1\)
而 \(b_{n+1}=m\) 为最大值
那么我们就可以构造满足 \(\gcd\) 两两互质的数列,则必满足题目要求(裴蜀定理)
于是我们要怎么算?
正难则反
我们算不满足的数列的个数
只要这些数的最大公约数大于 \(1\) 则可
我们把 \(m\) 分解质因数
每个质因子 \(\alpha\),\(m\) 内就有 \(m / \alpha\) 个数是其倍数
全这些数来构造数列,必然不合法,有 \((m / \alpha) ^ n\) 个
但我们会算重,容斥即可
总的方案有 \(m^n\) 个,减去这些不合法的即可
\(Code\)
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long LL;
const LL P = 1e9 + 7;
int cnt , ct;
LL n , m , num[30] , tmp[30] , c[30] , ans;
void dfs(int x , LL s , int b)
{
if (x > cnt)
{
tmp[++ct] = s , c[ct] = (b & 1 ? -1 : 1);
return;
}
dfs(x + 1 , s * num[x] , b + 1);
dfs(x + 1 , s , b);
}
LL fpow(LL x , LL y)
{
LL res = 1;
x %= P;
while (y)
{
if (y & 1) res = res * x % P;
y >>= 1 , x = x * x % P;
}
return res;
}
int main()
{
freopen("heal.in" , "r" , stdin);
freopen("heal.out" , "w" , stdout);
scanf("%lld%lld" , &n , &m);
LL o = m;
for(register int i = 2; (LL)i * i <= o; i++)
if (o % i == 0)
{
num[++cnt] = i;
while (o % i == 0) o /= i;
}
if (o > 1) num[++cnt] = o;
dfs(1 , 1 , 0);
for(register int i = 1; i <= ct; i++)
{
o = fpow(m / tmp[i] , n);
ans = ((ans + o * c[i]) % P + P) % P;
}
printf("%lld" , ans);
}
JZOJ 5348. 【NOIP2017提高A组模拟9.5】心灵治愈的更多相关文章
- JZOJ 【NOIP2017提高A组模拟9.14】捕老鼠
JZOJ [NOIP2017提高A组模拟9.14]捕老鼠 题目 Description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里的仓库灭灭鼠.于是,猫被农夫约派去捕 ...
- [JZOJ 100026] [NOIP2017提高A组模拟7.7] 图 解题报告 (倍增)
题目链接: http://172.16.0.132/senior/#main/show/100026 题目: 有一个$n$个点$n$条边的有向图,每条边为$<i,f(i),w(i)>$,意 ...
- 【NOIP2017提高A组模拟9.7】JZOJ 计数题
[NOIP2017提高A组模拟9.7]JZOJ 计数题 题目 Description Input Output Sample Input 5 2 2 3 4 5 Sample Output 8 6 D ...
- JZOJ 100029. 【NOIP2017提高A组模拟7.8】陪审团
100029. [NOIP2017提高A组模拟7.8]陪审团 Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Got ...
- JZOJ 5328. 【NOIP2017提高A组模拟8.22】世界线
5328. [NOIP2017提高A组模拟8.22]世界线 (File IO): input:worldline.in output:worldline.out Time Limits: 1500 m ...
- JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器
5329. [NOIP2017提高A组模拟8.22]时间机器 (File IO): input:machine.in output:machine.out Time Limits: 2000 ms M ...
- JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)
5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)
5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...
- JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)
5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...
- 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
[NOIP2017提高A组模拟9.17]信仰是为了虚无之人 Description Input Output Sample Input 3 3 0 1 1 7 1 1 6 1 3 2 Sample O ...
随机推荐
- 解决sox报错sox FAIL formats: no handler for given file type `mp3
sudo apt-get install libsox-fmt-mp3
- 【Flink】概念、入门、部署(yarn和standalone模式)、架构(组件和运行流程)、批处理、流处理API、window、时间语义、Wartermark、ProcessFunction、状态编程、Table API和SQL、CEP、面试题
一.Flink简介 1.概述 Apache Flink是为分布式.高性能.随时可用以及准确的流处理应用程序打造的开源流处理框架 对无界和有界数据流进行有状态计算 2.重要特点 (1)事件驱动型:从一个 ...
- 踩坑记录:Redis的lettuce连接池不生效
踩坑记录:Redis的lettuce连接池不生效 一.lettuce客户端 lettuce客户端 Lettuce 和 Jedis 的都是连接Redis Server的客户端程序.Jedis在实现上是直 ...
- day33-JSON&Ajax01
JSON&Ajax01 JSON 在线文档 AJAX 在线文档 1.JSON介绍 JSON指的是JavaScript对象表示法( JavaScript Object Notation),JSO ...
- jsvmp_wencai
网站 aHR0cDovL3d3dy5pd2VuY2FpLmNvbS91bmlmaWVkd2FwL2hvbWUvaW5kZXg= 直接搜索关键词 下面是要抓取的数据 逆向位置(一个即可) hook到he ...
- texlive编译lshort-zh-cn
项目 lshort-zh-cn是一篇latex的中文文档,本身也是latex编写的. 项目地址:https://github.com/ctex-org/lshort-zh-cn 编译 texlive打 ...
- Curve 文件存储在 Elasticsearch 冷热数据存储中的应用实践
Elasticsearch在生产环境中有广泛的应用,本文介绍一种方法,基于网易数帆开源的Curve文件存储,实现Elasticsearch存储成本.性能.容量和运维方面的显著提升. ES 使用 Cur ...
- Linux c 检测U盘挂载路径方法
思路: 1.使用df -h |grep mnt shell 命令查找到挂载路径信息 本代码是将结果存入文件中,再从文件中解析出路径信息.也可使用fopen直接从管道中读取信息 2.解析出信息最后的/m ...
- 一类(One-Class)分类器
本文摘自博客和论文,参考文献请看文末. 一类分类技术概念 与传统的分类技术不同,一类分类技术仅采用隶属于一个类别的样本来训练分类器,其通常被用于某种极端场景,即训练样本仅包含正常样本,而异常样本不可得 ...
- Java 进阶P-5.3+P-5.4
封装 增加可扩展性 可以运行的代码!=良好的代码 对代码做维护的时候最能看出代码的质量 如果想要增加一个方向,如down或up 用封装来降低耦合 Room类和Game类都有大量的代码和出口相关 尤其是 ...