思路:
找规律,和k进制的求法差不多,答案的奇数位是p%k,偶数位如果p%k!=0,那么答案是k-p%k,否则为0。
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,sizeof(a)) const int N=2e3+5; vector<int>ans; int main(){ ios::sync_with_stdio(false); cin.tie(0); ll p,k; cin>>p>>k; int t=0; while(p){ if(t%2==0)ans.pb(p%k),p/=k; else{ if(p%k)ans.pb(k-p%k),p=p/k+1; else ans.pb(0),p=p/k; } t++; } cout<<ans.size()<<endl; for(int i=0;i<ans.size();i++)cout<<ans[i]<<' '; cout<<endl; return 0; }