[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. Webpack4 学习笔记一初探Webpack

    前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 Webpack 打包文件 支持JS模块化 模式: production(0配置默认), development(生产环境) 更详细的 ...

  2. scrapy--json(360美图)

    之前开始学习scrapy,接触了AJax异步加载.一直没放到自己博客,趁现在不忙,也准备为下一个爬虫做知识储存,就分享给大家. 还是从爬取图片开始,先上图给大家看看成果,QAQ. 一.图片加载的方法 ...

  3. Java8 新API读取文件内容

    import java.io.IOException;import java.nio.charset.Charset;import java.nio.file.Files;import java.ni ...

  4. 01 mysql 基础一 (进阶)

    mysql基础一 1.认识mysql与创建用户 01 Mysql简介 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQLAB公司开发,目前属于Oracle公司. MySQL是一种关联数据库 ...

  5. R-描述性统计

    RT...老实说这一章我是抖的...但是,加油- # 从1:100中均匀抽取size个数据,replace=TRUE指有放回抽样,数据可以重复 x = sample(1:100, size = 100 ...

  6. 深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 环境配置

    本节详细说明一下深度学习环境配置,Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 ...

  7. Android开发——View滑动的三种实现方式

    0. 前言   Android开发中,我们常常需要View滑动实现一些绚丽的效果来优化用户体验.一般View的滑动可以用三种方式实现. 转载请注明出处:http://blog.csdn.net/seu ...

  8. Android stadio 模板 liveTemplate不管用

    今天自己弄了模板,发现不生效.后来才知道要在下面设置在哪里应用:如下图: Android satdio 制作自己的todo 有时候,别人都使用todo,使得自己个人的todo不好用了.那么怎么弄?自己 ...

  9. HttpMessageConverter进行加密解密

    技术交流群: 233513714 使用自定义HttpMessageConverter对返回内容进行加密 今天上午技术群里的一个人问” 如何在 Spring MVC 中统一对返回的 Json 进行加密? ...

  10. 03019_过滤器Filter

    1.Filter的简介 (1)Filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理: (2)快速入门步骤 ①编写一个过滤器的类实现Filter接 ...