[codeforces934D]A Determined Cleanup

试题描述

In order to put away old things and welcome a fresh new year, a thorough cleaning of the house is a must.

Little Tommy finds an old polynomial and cleaned it up by taking it modulo another. But now he regrets doing this...

Given two integers \(p\) and \(k\), find a polynomial \(f(x)\) with non-negative integer coefficients strictly less than \(k\), whose remainder is \(p\) when divided by \((x + k)\). That is, \(f(x) = q(x) \cdot (x + k) + p\), where \(q(x)\) is a polynomial (not necessarily with integer coefficients).

给定两个整数 \(p\) 和 \(k\),构造一个满足下列条件的多项式 \(f(x)\):

  • 每项系数严格小于 \(k\) 且非负;
  • \(f(x) = g(x) \cdot (x+k) + p\),其中 \(g(x)\) 是个多项式,系数没有任何要求。

输入

The only line of input contains two space-separated integers \(p\) and \(k\) \((1 \le p \le 10^{18}, 2 \le k \le 2 000)\).

输出

If the polynomial does not exist, print a single integer \(-1\), or output two lines otherwise.

In the first line print a non-negative integer \(d\) — the number of coefficients in the polynomial.

In the second line print d space-separated integers \(a_0, a_1, \cdots , a_{d - 1}\), describing a polynomial fulfilling the given requirements. Your output should satisfy \(0 \le a_i < k\) for all \(0 \le i \le d - 1\), and \(a_{d - 1} \ne 0\).

If there are many possible solutions, print any of them.

输入示例1

46 2

输出示例1

7
0 1 0 0 1 1 1

输入示例2

2018 214

输出示例2

3
92 205 1

数据规模及约定

见“输入

题解

我们假设 \(f(x) = \sum_{i=0}^d a_i x^i\),然后做一下 \(\frac{f(x)}{(x+k)}\) 的大除法,并将得到的 \(g(x)\) 的系数写出来(假设 \(g(x) = \sum_{i=0}^{d-1} b_i x^i\)),会发现如下规律:

\[b_{d-1} = a_d \\
b_{d-2} = a_{d-1} - k a_d \\
b_{d-3} = a_{d-2} - k a_{d-1} + k^2 a_d \\
\cdots \\
b_0 = a_1 - k a_2 + k^2 a_3 - \cdots \\
p = a_0 - k a_1 + k^2 a_2 - \cdots = \sum_{i=0}^d (-k)^i a_i
\]

于是发现 \((a_0a_1a_2 \cdots)_{-k}\) 就是 \(p\) 的 \(-k\) 进制表示,上面的过程证明了它是 \(p\) 的 \(-k\) 进制表示是满足题目要求的必要条件;由于 \(g(x)\) 没有任何约束,即 \(b_i\) 可以是任意实数,充分性也显然。

负进制的转化也是同样的过程,只不过除法要做到严格的向下取整,而不是用 C++ 中默认的朝零取整。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <algorithm>
using namespace std;
#define rep(i, s, t) for(int i = (s), mi = (t); i <= mi; i++)
#define dwn(i, s, t) for(int i = (s), mi = (t); i >= mi; i--)
#define LL long long LL read() {
LL x = 0, f = 1; char c = getchar();
while(!isdigit(c)){ if(c == '-') f = -1; c = getchar(); }
while(isdigit(c)){ x = x * 10 + c - '0'; c = getchar(); }
return x * f;
} #define maxn 65 int cnt, A[maxn]; int main() {
LL p = read(), k = read(); while(p) {
LL div = p / -k;
if(-k * div > p) div++;
A[cnt++] = p - (-k * div);
p = div;
} printf("%d\n", cnt);
rep(i, 0, cnt - 1) printf("%d%c", A[i], i < cnt - 1 ? ' ' : '\n'); return 0;
}

[codeforces934D]A Determined Cleanup的更多相关文章

  1. Codeforces 934D - A Determined Cleanup

    934D - A Determined Cleanup 思路: 找规律,和k进制的求法差不多,答案的奇数位是p%k,偶数位如果p%k!=0,那么答案是k-p%k,否则为0. 代码: #include& ...

  2. Codeforces 934.D A Determined Cleanup

    D. A Determined Cleanup time limit per test 1 second memory limit per test 256 megabytes input stand ...

  3. Codeforces Round #462 (Div. 2) D. A Determined Cleanup

    D. A Determined Cleanup time limit per test1 second memory limit per test256 megabytes Problem Descr ...

  4. [Codeforces 933B]A Determined Cleanup

    Description 题库链接 给你两个正整数 \(p,k\) ,询问是否能够构造多项式 \(f(x)=\sum\limits_{i=0}^{d-1}a_ix^i\) ,使得存在多项式 \(q(x) ...

  5. Codeforces Round #464 (Div. 2) A Determined Cleanup

    A. Love Triangle time limit per test1 second memory limit per test256 megabytes Problem Description ...

  6. Codeforces 934D/933B - A Determined Cleanup

    传送门:http://codeforces.com/contest/934/problem/D 给定两个正整数p(p≥1).k(k>1).多项式f(x)的系数的取值集合为{0,1,2,...,k ...

  7. 【Codeforces Round #462 (Div. 1) B】A Determined Cleanup

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 设\(设f(x)=a_d*x^{d}+a_{d-1}*x^{d-1}+...+a_1*x+a_0\) 用它去除x+k 用多项式除法除 ...

  8. codeforces 462div.2

    A A Compatible Pair standard input/output 1 s, 256 MB    x1916 B A Prosperous Lot standard input/out ...

  9. SVN:Previous operation has not finished; run 'cleanup' if it was interrupted

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html cleanup failed to process the following ...

随机推荐

  1. SSI框架下,用jxl实现导出功能

    SSI框架下,用jxl实现导出功能 先说明一下,这个是SSI框架下,前端用ExtJs,应用在一个企业级的系统中的导出功能,因为是摸索着做的,所以里面有一些代码想整理一下,如果有人看到了,请视自己的架构 ...

  2. 私有maven库发布及使用流程

    ## 私有maven库发布流程 ### 环境配置 - idea环境下,如果使用内置maven,需要手动生成settings.xml,并关联. - 操作如下 - 生成settings.xml 右键pom ...

  3. NuGet管理和还原程序包

    在很多开源的程序下载下来不能使用,一般都是平台X86 和X64没有修改,还一个就是程序缺少资源包文件.用Nuget还原即可: 一般建议先修改好平台,然后用NuGet还原程序包.

  4. 开发工具cfree安装报错解决

    报错如下: [ --------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW-------------------- 检查文件依赖性... 正在编译 ...

  5. 【linux】【指令】systemctl 指令部分解读

    systemctl [OPTIONS...] {COMMAND} ... Query or send control commands to the systemd manager. -h --hel ...

  6. 腾讯首页分辨手机端与pc端代码

    腾讯首页分辨手机端与pc端代码 自己在做网页的时候在腾讯网首页借鉴的代码. 代码: <!-- 移动适配JS脚本 --> <script type="text/javascr ...

  7. Spark Streaming 交互 Kafka的两种方式

    一.Spark Streaming连Kafka(重点) 方式一:Receiver方式连:走磁盘 使用High Level API(高阶API)实现Offset自动管理,灵活性差,处理数据时,如果某一时 ...

  8. 图解HTTP总结(7)——确保Web安全的HTTPS

    HTTP 主要有这些不足, 例举如下.       通信使用明文( 不加密) , 内容可能会被窃听.       不验证通信方的身份, 因此有可能遭遇伪装. 无法证明报文的完整性, 所以有可能已遭篡改 ...

  9. python3 练习题100例 (十七)四位车号问题

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'Fan Lijun' import math for i in range(1 ...

  10. manjaro安装teamviewer后无法打开

    点桌面快捷方式一闪而过 命令行运行提示 $ teamviewer /opt/teamviewer/tv_bin/script/tvw_exec:行7: /opt/teamviewer/logfiles ...