Codeforces D - GCD of Polynomials】的更多相关文章

D - GCD of Polynomials 逆推,根据(i-2)次多项f(i-2)式和(i-1)次多项式f(i-1)推出i次多项式f(i) f(i)=f(i-1)*x+f(i-2) 样例已经给出0次和1次的了 注意系数绝对值大于1对2取模 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,sizeof(a)…
[题目]B. GCD of Polynomials [题意]给定n,要求两个最高次项不超过n的多项式(第一个>第二个),使得到它们GCD的辗转次数为n.n<=150. [算法]构造 [题解]辗转n次是最坏情况——每次辗转至少会使被模数的最高次项变到模数的最高次项-1,也就是必须构造两个多项式满足这种最坏情况. eg.n=5,(5,4),(4,3),(3,2),(2,1),(1,0),(0,0). 为了构造最坏情况,考虑模仿斐波那契数列进行构造: p(0)=1,p(1)=x,p(n)=x*p(n…
传送门:http://codeforces.com/contest/902/problem/D 本题是一个数学问题——多项式整除. 对于两个整数a.b,求最大公约数gcd(a,b)的辗转相除法的函数如下: int gcd(int a, int b) { ) return a; return gcd(b, a % b); } 一次辗转相除法将数对(a,b)转化成(b,a mod b),直至b=0. 对于多项式A(x),定义deg A(x)为多项式的次数.对于多项式A.B,定义多项式mod运算:若A…
题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com/blog/entry/20692 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include &…
主题链接:点击打开链接 特定n*m矩阵,[i,j]分值为gcd(i,j) 给定一个k长的序列,问能否匹配上 矩阵的某一行的连续k个元素 思路: 我们要求出一个解(i,j) 使得 i<=n && j<=m 此时输出 YES 对于j j % b[0] = 0 j+1 % b[1] = 0 ··· j+l % b[l] = 0 依据定理:若 a == b (mod n) => (a+c) == b+c (mod n) 所以将上式变换为 j % b[0] = 0 j % b[1]…
什么都不会只能学数论QAQ 英文原题不贴了 题意: 有一张N*M的表格,i行j列的元素是gcd(i,j)读入一个长度为k,元素大小不超过10^12的序列a[1..k],问这个序列是否在表格的某一行中出现过 1<=N,M<=10^121<=k<=10^4 恩 首先显然x=lcm(a[i]) 然后(y+i-1)%a[i]==0 即y%[i]=1-n 然后就神奇地变成了中国剩余定理 求出x和y后判无解即可,情况比较多 首先如果x和y超过n,m的范围或<0显然不对 然后注意枚举i看g…
题意:给你n*n gcd表中的所有数(以任意顺序) ,求对角线上的n个数分别是什么.gcd表定义如下,先将n个数填在对角线的上,然后将各个格子填上对应对角线上的数的gcd值,也就是V[i][j]=gcd(V[i][i],V[j][j]) 题解:观察发现有很多重复的数,而且最大的那个数必然是对角线上的数.所以用map存数据,map.first 存数,map.second存次数. 一开始发现了如果最大的数N重复x*x次,那么对角线上就有x个N,于是每次输出根号次最大的数,用这个规律wa23了(233…
大意: 定义一个数列的特征值为两个数gcd的最大值, $f(l,r)$表示数列删除区间$[l,r]$的元素后剩余元素的特征值, 求$\sum_{i=1}^n\sum_{j=i}^n{f(i,j)}$ 怎么这div.1的C怎么这么难.....好像D过的人比C还要多. 特征值不好处理, 考虑将贡献转为前缀 即转化为对于所有的$x$, 求出$H[x]=\space f(l,r)\le x$的个数, 显然$H[x]$是单调不减的. 记$next[x]_l=\space f(l,r)\le x$的最小$r…
题意 给出n(1–150). 输出两个多项式A,B从常数到最高次的系数,使得对两个多项式求gcd时,恰好经过n步得到结果. 多项式的gcd一步是指(A(x),B(x))变成(B,A mod B)的过程,且当A mod B为0时,视为得到结果B. A mod B为多项式求余,参见 long division. 要求两个多项式的所有系数都是1,0,-1.前导系数(最高次项系数)为1,度数(最高次)不超过n,第一个多项式的度数大于第二个 分析:这个题懵逼了好几天,题解愣是没看懂,来学校后在宿舍用笔划拉…
题目链接: http://codeforces.com/contest/658/problem/D 题意: 给定合法多项式,改变一项的系数,使得P(2)=0,问有多少种方法? 分析: 暴力求和然后依次试一试肯定不行啦~ 仔细想想,多项式和为0,就是说存在某个2i,使得剩下的和等于x∗2i,(其中x 的绝对值小于等于k). 那我们就从最小的开始看.把系数依次向后移. 如果系数ai为偶数,那么ai∗2i=(ai/2)∗2i+1,就令bi=0,否则bi=1,最终所有系数都移到了2n上. 如果某个bi为…