洛谷P1771 方程的解
P1771 方程的解
都知道这个题可以用隔板法做
把这个\(g(x)\)想象为.....\(g(x)\)个苹果?
因为解是正整数,所以给这些“苹果”分组的时候每组最少有一个
然后我们在这\(g(x)\)个苹果形成的\(g(x)-1\)个空隙中插入\(k-1\)个板就把它分成了\(k\)组
所以答案是\(\binom{g(x)-1}{k-1}\)
然而组合数要用到除法,这题又要高精
不过高精除低精好像也没有很难,莫名恐惧
我们可以给每个数质因数分解,记录每个质因数出现次数,乘法时加一,除法时减一就行了然而这样并没有啥用
不过这种方法可以运用在答案要模一个数,但模数不是质数不能求逆元的情况下
要提前筛质数,一开始我居然认为\(n\)的质因数最大不超过\(\sqrt{n}\),直接手打质数表,结果一直WA
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#define reg register
#define EN std::puts("")
#define LL long long
inline int read(){
int x=0,y=1;
char c=std::getchar();
while(c<'0'||c>'9'){if(c=='-') y=0;c=std::getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^48);c=std::getchar();}
return y?x:-x;
}
int p[1006],notp[1006];
int num[1006],a[10005];
inline void getprime(int n){
for(reg int i=2;i<=n;i++){
if(notp[i]) continue;
p[++p[0]]=i;
for(reg int j=i+i;j<=n;j+=i) notp[j]=1;
}
}
inline int power(int a,int b){
reg int ret=1;
while(b){
if(b&1) ret=(ret*a)%1000;
a=(a*a)%1000;b>>=1;
}
return ret;
}
inline void fen(int x,int k){
for(reg int i=1;i<=p[0]&&x>1;i++){
for(;!(x%p[i]);x/=p[i])
num[i]+=k;
}
}
inline void mul(int x){
for(reg int i=1;i<=a[0];i++) a[i]*=x;
for(reg int i=1;i<a[0];i++) a[i+1]+=a[i]/10,a[i]%=10;
for(;a[a[0]]>9;a[0]++) a[a[0]+1]+=a[a[0]]/10,a[a[0]]%=10;
}
int main(){
int k=read()-1,x=read()%1000;
x=power(x,x)-1;
// std::printf("%d %d\n",k,x);
getprime(std::max(k,x));
a[0]=a[1]=1;
for(reg int i=k+1;i<=x;i++) fen(i,1);
for(reg int i=2;i<=x-k;i++) fen(i,-1);
for(reg int i=1;i<=p[0];i++){
for(reg int j=1;j<=num[i];j++) mul(p[i]);
}
for(reg int i=a[0];i;i--) std::printf("%d",a[i]);
return 0;
}
洛谷P1771 方程的解的更多相关文章
- 洛谷P1771 方程的解_NOI导刊2010提高(01)
题目描述 佳佳碰到了一个难题,请你来帮忙解决. 对于不定方程a1+a2+…+ak-1+ak=g(x),其中k≥2且k∈N,x是正整数,g(x)=x^x mod 1000(即x^x除以1000的余数), ...
- P1771 方程的解_NOI导刊2010提高(01)
P1771 方程的解_NOI导刊2010提高(01) 按题意用快速幂把$g(x)$求出来 发现这不就是个组合数入门题吗! $k$个人分$g(x)$个苹果,每人最少分$1$个,有几种方法? 根据插板法, ...
- 洛谷【P1619】 解一元二次方程的烦恼
我对模拟的理解:https://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P16 ...
- 洛谷 P2312 & bzoj 3751 解方程 —— 取模
题目:https://www.luogu.org/problemnew/show/P2312 https://www.lydsy.com/JudgeOnline/problem.php?id=3751 ...
- 洛谷 题解 P2312 【解方程】
Problem P2312 [解方程] >>> record 用时: 1166ms 空间: 780KB(0.76MB) 代码长度: 2.95KB 提交记录: R9909587 > ...
- 洛谷 2312 / bzoj 3751 解方程——取模
题目:https://www.luogu.org/problemnew/show/P2312 https://www.lydsy.com/JudgeOnline/problem.php?id=3751 ...
- 洛谷P2365 任务安排 [解法一]
题目描述 N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti.在每批任务开始 ...
- BZOJ3129/洛谷P3301方程(SDOI2013)容斥原理+扩展Lucas定理
题意:给定方程x1+x2+....xn=m,每个x是正整数.但是对前n1个数做了限制x1<=a1,x2<=a2...xn1<=an1,同时对第n1+1到n1+n2个数也做了限制xn1 ...
- 洛谷——P1689 方程求解
P1689 方程求解 题目描述 给一个方程,形如X+Y=Z或X-Y=Z.给出了其中两个未知数,请求出第三个数.未知数用‘?’表示,等式中也许会出现一些多余的空格. 输入输出格式 输入格式: 一行,方程 ...
随机推荐
- Java第十天,多态
多态 一.多态的定义: 一个对象拥有多种形态,这就是对象的多态性.也就是说多态针对的是对象.多态的前提是接口和继承(C++中实行多继承,不存在接口). 二.多态在代码中的形式: 父类 对象名 = ne ...
- javascript入门 之 Ajax(一)
1.在项目的根目录下创建data目录,data目录下创建info文件,编写info文件如下代码: <h1>all data<h2> <p>this is the d ...
- 第一章 AT&T
1.一个公司(企业)越庞大,就越危险:越复杂,就越濒临坍塌:快速发展的同时,也埋下了隐患. 2.再庞大的企业也不可能永久站立,下个十年谁也说不准谁会在浪潮之巅. 3.一个人能走多远,往往取决于他能看多 ...
- 【第一章】黎姿的python学习笔记
- 23 抽象类 abstract
/*概念 * abstract:关键字,用于修饰方法和类 * 抽象方法:不同类的方法是相似,但是具体内容又不太一样,所以我们只能抽取他的声明,没有具体的方法体,没有具体方法体的方法就是抽象方法 * 抽 ...
- Array(数组)对象-->数组遍历
1.数组的遍历: 方法1:使用for循环语句 /*定义数组*/ var arr=[1,2,3,4,5]; /*遍历*/ for (var i = 0;i<arr.length;i++){ con ...
- 03 GUI界面的错误日志查看及清除
右上角图标,会显示当前使用工具的运行报错信息,点击可在下方查看到实际的错误日志
- 浅谈ArrayList
浅谈ArrayList 废话不多说(事实是不会说),让我们直接进入正题 首先讲一讲最基本的ArrayList的初始化,也就是我们常说的构造函数,ArrayList给我们提供了三种构造方式,我们逐个来查 ...
- CORS漏洞的学习与分析
同源策略 同源策略(Same origin policy)是一种约定,一种非常重要的安全措施,也是最基本的安全功能,它禁止了来自不同源的脚本对当前页面的读取或修改,从而限制了跨域访问甚至修改资源,防止 ...
- 前端学习笔记 --ES6新特性
前言 这篇博客是我在b站进行学习es6课程时的笔记总结与补充. 此处贴出up主的教程视频地址:深入解读ES6系列(全18讲) 1.ES6学习之路 1.1 ES6新特性 1. 变量 2. 函数 3. 数 ...