UVA-1635 数学
题意:
给定n个数a1,a2,a3.....an,依次求出相邻的两个数的和,最后成为一个数,问这个数模m的值与那些最初的数无关
例:a1,a2,a3, m=2 => a1+a2,a2+a3 => a1+2a2+a3 ,显然第二项无关。
代码:
//可以看出最后得到的式子符合杨辉三角,所以可以递推出所有的项的系数(c(i+1)=c(i)*(n-i)/(i+1)),
//但是数太大不能直接计算,可以将他们分解成 a1^p1*a2^p2*... 的形式,这样就只需要判断因子的指数的大小即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxn=;
int c[maxn+];
int ans[maxn+],prime[maxn+],re[maxn+],tot;
void init(int m,int p){
tot=;
memset(re,,sizeof(re));
for(int i=;i<=sqrt(m+0.5);i++){
if(m%i==){
prime[++tot]=i;
while(m%i==){
m/=i;
re[tot]+=p;
}
}
}
if(m>){
prime[++tot]=m;
re[tot]+=p;
}
}
int solve(int m,int p){
for(int i=;i<=sqrt(m+0.5);i++){
if(m%i==){
while(m%i==){
m/=i;
c[i]+=p;
}
}
}
if(m>) c[m]+=p;
for(int i=;i<=tot;i++){
if(prime[i]>maxn) return ;
else if(c[prime[i]]<re[i])
return ;
}
return ;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)==){
init(m,);
int cnt=;
memset(c,,sizeof(c));
n--;
for(int i=;i<n;i++){
solve(n-i,);
int tmp=solve(i+,-);
if(tmp) ans[++cnt]=i+;
}
printf("%d\n",cnt);
for(int i=;i<=cnt;i++)
printf("%d%c",ans[i],i==cnt?'\n':' ');
if(cnt==) printf("\n");//坑!!!
}
return ;
}
UVA-1635 数学的更多相关文章
- Irrelevant Elements UVA - 1635 二项式定理+组合数公式+素数筛+唯一分解定理
/** 题目:Irrelevant Elements UVA - 1635 链接:https://vjudge.net/problem/UVA-1635 题意:給定n,m;題意抽象成(a+b)^(n- ...
- UVA - 11181 数学
UVA - 11181 题意: n个人去买东西,其中第i个人买东西的概率是p[i],最后只有r个人买了东西,求每个人实际买了东西的概率 代码: //在r个人买东西的概率下每个人买了东西的概率,这是条件 ...
- UVA - 1262 数学
UVA - 1262 题意: 有两个6*5 的大写字母组成的矩阵,需要找出满足条件的字典序第k小的密码:密码中每个字母在两个矩阵的对应的同一列中都出现过 代码: // 先处理出来每一列可以取的字母,例 ...
- UVa 1635 - Irrelevant Elements(二项式系数 + 唯一分解定理)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- uva 11762 数学期望+记忆化搜索
题目大意:给一个正整数N,每次可以在不超过N的素数中随机选择一个P,如果P是N的约数,则把N变成N/p,否则N不变,问平均情况下需要多少次随机选择,才能把N变成1? 分析:根据数学期望的线性和全期望公 ...
- UVa 10943 (数学 递推) How do you add?
将K个不超过N的非负整数加起来,使它们的和为N,一共有多少种方法. 设d(i, j)表示j个不超过i的非负整数之和为i的方法数. d(i, j) = sum{ d(k, j-1) | 0 ≤ k ≤ ...
- UVa 1635 (唯一分解定理) Irrelevant Elements
经过紫书的分析,已经将问题转化为求组合数C(n-1, 0)~C(n-1, n-1)中能够被m整除的个数,并输出编号(这n个数的编号从1开始) 首先将m分解质因数,然后记录下每个质因子对应的指数. 由组 ...
- uva 568(数学)
题解:从1開始乘到n,由于结果仅仅要最后一位.所以每乘完一次,仅仅要保留后5位(少了值会不准确,刚開始仅仅保留了一位.结果到15就错了,保留多了int会溢出,比方3125就会出错) 和下一个数相乘,接 ...
- UVa 1635 无关的元素(唯一分解定理+二项式定理)
https://vjudge.net/problem/UVA-1635 题意: 给定n个数a1,a2,...an,依次求出相邻两数之和,将得到一个新数列.重复上述操作,最后结果将变成一个数.问这个数除 ...
- UVA 1635 Irrelevant Elements
https://vjudge.net/problem/UVA-1635 题意:n个数,每相邻两个求和,最后变成1个数,问这个数除m的余数与第几个数无关 n个数使用次数分别为C(n-1,i) i∈[0, ...
随机推荐
- scrapy+selenium+chromedriver解析动态渲染页面
背景:动态页面是页面是通过js代码渲染出来的,无法直接使用scrapy爬虫,这是就需要先把js代码转为静态的html,再用scrapy爬虫就可以解决 解决办法:增加SeleniumMiddleware ...
- [python][odlboy]设置字符串打印的颜色
格式:\033[显示方式;前景色;背景色m 说明:前景色 背景色 颜色---------------------------------------30 ...
- ES6的新特性(2)——let 与 const 增强变量声明
let 与 const 增强变量声明 ES6 新增了let命令,用来声明局部变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束. 先看个var的常见 ...
- Scrum立会报告+燃尽图(十一月十八日总第二十六次):功能开发与讨论贡献分配规则
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 项目地址:https://git.coding.net/zhang ...
- “Hello World!”团队第三周召开的第三次会议
今天是我们团队“Hello World!”团队第三周召开的第三次会议.博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 八.代码地址 ...
- java 抽象类&接口
1,抽象类中有构造函数吗? 有,用于给子类对象进行初始化. 2,抽象关键字不可以和那些关键字共存? private 不行 static 不行 final 不行 final关键字: 1,fina ...
- Vue于React特性对比(二)
一,关于响应式数据更新方式的实现 1)只有在data里面定义的数据才会有响应式更新 vue依赖的defineProperty的数据劫持加上依赖数据,实现数据的响应式更新.可以称之为依赖式的响应.因为依 ...
- RPC和WebService的区别
最近分析的这个系统,逻辑架构中有一层是RPC interface.之前对RPC不熟悉,就上网搜索了一下资料,在此总结一下: RPC是Remote Procedure Calling,远程过程调用的缩写 ...
- Delphi 组件渐进开发浅谈(一)——由简入繁
最近业余时间在写游戏修改器玩,对于Delphi自带的组件总觉得差强人意,需要书写大量冗余代码,如果大量使用第三方组件,在以后的移植和与他人交互时也不是很方便,因此便产生了自己封装组件的想法. 实际上这 ...
- JMeter脚本增强之集合点
集合点的概念:用于实现所谓并发操作,如果集合点设定是10个人,那么所有的用户就会在同一条起跑线上等着后面的人,等10个人到齐了就哗地一下全部跑出去执行同一个动作.如果设置了超时,那么过了超时时间,有可 ...