传送门:http://codeforces.com/contest/902/problem/D

本题是一个数学问题——多项式整除。

对于两个整数ab,求最大公约数gcd(a,b)的辗转相除法的函数如下:

int gcd(int a, int b) {
if (b == ) return a;
return gcd(b, a % b);
}

一次辗转相除法将数对(a,b)转化成(b,a mod b),直至b=0。

对于多项式A(x),定义deg A(x)为多项式的次数。对于多项式AB,定义多项式mod运算:若A(x)=B(xD(x)+R(x),deg R(x)<deg B(x),则R(x)A(x) mod B(x)。

于是,一次辗转相除将多项式对(A,B)转化成(B,A mod B),直至B=0。

已知两个多项式A(x)、B(x)的系数在{-1,0,1}中取值,且deg A(x)deg B(x);构成的多项式对(A,B),经过n次辗转相除后结束操作。求可能的多项式A(x)、B(x)。

考虑整数的情形:Fibonacci数列:F(0)=1,F(1)=1,F(n+1)=F(n)+F(n-1)。

于是,一次辗转相除法将(F(n+1),F(n))转化成(F(n),F(n-1))。于是,(F(n),F(n-1))在n次辗转相除后结束操作。

类似地,构造多项式的情形:P(0)=1,P(1)=xP(n+1)=x·P(n)±P(n-1)。

递推时,维护P(n+1)的系数在{-1,0,1}中取值,这可以通过符号选择(+/-)实现。

还可以构造多项式:P(0)=1,P(1)=xP(n+1)x·P(n)+P(n-1) mod2。

参考程序如下:

#include <stdio.h>
#define MAX_N 200 int p[MAX_N][MAX_N]; int main(void)
{
int n;
scanf("%d", &n);
p[][] = ;
p[][] = ;
for (int i = ; i < n; i++) {
//p[i + 1] = {x * p[i] + p[i - 1]} % 2;
for (int j = ; j <= i; j++)
p[i + ][j + ] += p[i][j];
for (int j = ; j <= i - ; j++)
p[i + ][j] += p[i - ][j];
for (int j = ; j <= i + ; j++)
p[i + ][j] %= ;
}
int deg;
for (deg = n; p[n][deg] == ; deg--);
printf("%d\n", deg);
for (int i = ; i <= deg; i++)
printf("%d ", p[n][i]);
printf("\n");
for (deg = n - ; p[n - ][deg] == ; deg--);
printf("%d\n", deg);
for (int i = ; i <= deg; i++)
printf("%d ", p[n - ][i]);
printf("\n");
return ;
}

Codeforces 902D/901B - GCD of Polynomials的更多相关文章

  1. 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次 ...

  2. 【CodeForces】901 B. GCD of Polynomials

    [题目]B. GCD of Polynomials [题意]给定n,要求两个最高次项不超过n的多项式(第一个>第二个),使得到它们GCD的辗转次数为n.n<=150. [算法]构造 [题解 ...

  3. codeforces 803C Maximal GCD(GCD数学)

    Maximal GCD 题目链接:http://codeforces.com/contest/803/problem/C 题目大意: 给你n,k(1<=n,k<=1e10). 要你输出k个 ...

  4. Codeforces 803C. Maximal GCD 二分

    C. Maximal GCD time limit per test: 1 second memory limit per test: 256 megabytes input: standard in ...

  5. Codeforces 338 D. GCD Table

    http://codeforces.com/problemset/problem/338/D 题意: 有一张n*m的表格,其中第i行第j列的数为gcd(i,j) 给出k个数 问在这张表格中是否 有某一 ...

  6. Codeforces 583 DIV2 GCD Table 贪心

    原题链接:http://codeforces.com/problemset/problem/583/C 题意: 大概就是给你个gcd表,让你还原整个序列. 题解: 由$GCD(a,a)=a$,我们知道 ...

  7. [Codeforces Round511C] Enlarge GCD

    [题目链接] https://codeforces.com/contest/1047/problem/C [算法] 首先求出n个数的最大公约数g , 将每个数除以g , 那么 , 问题就转化为在n个数 ...

  8. Codeforces 803C. Maximal GCD

    题目链接:http://codeforces.com/contest/803/problem/C 中了若干trick之后才过... k个数的严格递增序列最小权值和就是${n*(n+1)/2}$,枚举这 ...

  9. CodeForces - 1101D:GCD Counting (树分治)

    You are given a tree consisting of n vertices. A number is written on each vertex; the number on ver ...

随机推荐

  1. LinkedHashMap源代码阅读

    LinkedHashMap LinkedHashMap内部採用了散列表和链表实现Map接口,并能够保证迭代的顺序,和HashMap不同,其内部维护一个指向全部元素的双向链表,其决定了遍历的顺序,一般是 ...

  2. IntelliJ IDEA 问题总结之二(待补充) —— 快捷键、主题样式、导出jar、sqlite

    随着对idea的使用,问题越来越多,開始第二篇问题总结. 1.快捷键. 用惯了eclipse再用idea后,快捷键就是一个大问题. 并且网上idea的快捷键有非常多版本号.不知道是不是老版本号和新版本 ...

  3. spark之map与flatMap差别

    scala> val m = List(List("a","b"),List("c","d")) m: List[ ...

  4. mysql 修改和删除 权限设置

    SET SQL_SAFE_UPDATES = 0; update和delete操作将会顺利执行 SET SQL_SAFE_UPDATES = 1; (安全更新模式(safe update mode)) ...

  5. Google Chrome调试常用快捷键

    Ctrl+Shift+I调出开发者工具 Ctrl+R刷新(界面显示不清楚,刷新后变清楚)

  6. Winform 异步调用2 时间

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. mybatis parameterType报错:There is no getter for property named 'xxx' in 'class java.lang.String'

    方法1: 当parameterType = "java.lang.String" 的时候,参数读取的时候必须为 _parameter 方法2: 在dao层的时候,设置一下参数,此方 ...

  8. C#:使用FastReport打印带图片传参模板的实现方法

    大家都知道,C#打印图片可以直接调用PrintDocument控件的PrintPage事件,通过画刷对image对象直接进行绘制.但是这种方法存在局限,例如如果打印的图片需要按纸张大小进行缩放的话,那 ...

  9. 大白话理解promise对象

    Promise  代表了未来某个将要发生的事件(通常是一个异步操作)  Promise 是异步编程的解决方案,能够简化多层回调嵌套,代表了未来某个将要发生的事件.Promise是一个构造函数,本身有a ...

  10. .htaccess的基本用法与介绍

    ●自定义错误页 .htaccess的一个应用是自定义错误页面,这将使你可以拥有自己的.个性化的错误页面(例如找不到文件时),而不是你的服务商提供的错误页或没有任何页面.这会让你的网站在出错的时候看上去 ...