# 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$ 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)·(x + k) + p$ , where $q(x)$ is a polynomial (not necessarily with integer coefficients).

## Input

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

## Output

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, …, a_{d - 1}$ , describing a polynomial $f(x)=\sum_{i=0}^{d-1}a_i·x^i$ fulfilling the given requirements. Your output should satisfy $0 ≤ a_i < k$ for all $0 ≤ i ≤ d - 1$ , and $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 \times a_1+p$
• 一次项：$k \times a_2 + a_1$
• 二次项：$k\times a_3+a_2$

#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;
}