小坏蛋_千千

I was caught in a heavy rain!

Codeforces 933 B. A Determined Cleanup（数学）

Description

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$$p$ and $k$$k$ , find a polynomial $f\left(x\right)$$f(x)$ with non-negative integer coefficients strictly less than $k$$k$ , whose remainder is $p$$p$ when divided by $\left(x + k\right)$$(x + k)$ . That is, $f\left(x\right) = q\left(x\right)·\left(x + k\right) + p$$f(x) = q(x)·(x + k) + p$ , where $q\left(x\right)$$q(x)$ is a polynomial (not necessarily with integer coefficients).

Input

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

Output

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

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

In the second line print $d$$d$ space-separated integers ${a}_{0}, {a}_{1}, ..., {a}_{d - 1}$$a_0, a_1, ..., a_{d - 1}$ , describing a polynomial $f\left(x\right)=\sum _{i=0}^{d-1}{a}_{i}·{x}^{i}$$f(x)=\sum_{i=0}^{d-1}a_i·x^i$ fulfilling the given requirements. Your output should satisfy $0 \le {a}_{i} < k$$0 ≤ a_i < k$ for all $0 \le i \le d - 1$$0 ≤ i ≤ d - 1$ , and ${a}_{d - 1} \ne 0$$a_{d - 1} ≠ 0$ .

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

Examples input

46 2


Examples output

7
0 1 0 0 1 1 1


思路

• 常数项：$k×{a}_{1}+p$$k \times a_1+p$
• 一次项：$k×{a}_{2}+{a}_{1}$$k \times a_2 + a_1$
• 二次项：$k×{a}_{3}+{a}_{2}$$k\times a_3+a_2$

AC 代码

#include<bits/stdc++.h>
#define IO ios::sync_with_stdio(false);\
cin.tie(0);\
cout.tie(0);
using namespace std;
typedef __int64 LL;
const int maxn = 1e5+10;

LL a[maxn];
LL ans[maxn];
LL k,p;

LL get(LL a1,int i)
{
ans[i] = ((a1 % k) + k) % k;
return (ans[i] - a1)/k;
}

int main()
{
IO;
cin>>p>>k;
a[0] = p;
for(int i=1; i<maxn; i++)
{
a[i] = get(a[i-1],i);
if(!a[i])
{
cout<<i<<endl;
for(int j=1; j<=i; j++)
cout<<ans[j]<<" ";
cout<<endl;
break;
}
}
return 0;
}

Enzymii的hu测 T3.violetevergarden（反演【约数个数）

2018-03-25 10:09:24

牛顿迭代，多项式求逆，除法，开方，exp，ln，求幂，任意模数FFT

2018-05-31 12:26:07

MATLAB ttest和ttest2的区别

2018-04-03 12:16:23

矩阵 II : 线性组的线性相关性

2018-01-28 13:09:40

「Codeforces 809D」Hitchhiking in the Baltic States

2018-01-12 08:08:29

cf462 A Determined Cleanup

2018-02-16 17:25:40

Codeforces 933 C. A Colourful Prospect （平面图，欧拉公式）

2018-02-16 11:49:04

cd A Colourful Prospect

2018-02-20 20:05:07

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

2018-02-26 20:15:59

CodeForces 933B A Determined Cleanup（数学推导构造）

2018-02-15 14:40:28