题目描述
链接:https://ac.nowcoder.com/acm/contest/11228/D
来源:牛客网
题意
思路
实际上,x即规定的进制,将n转化为x进制数即可
将a作为将要构造成n的数,b作为x^k,每次把合适的b加到a上
code
#include<bits/stdc++.h>
#define DEBUG(x) #x<<":"<<(x)<<' '
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
const int INF=0x3f3f3f3f;
// const int mod=1e9+7;
// const int N;
//进制问题 x及2~10进制
void solv()
{
int n,x;
cin>>n>>x;
int temp=n;
vector<int> vec;//low->high
while(n)
{
vec.push_back(n%x);
n/=x;
}
int len=vec.size();
vector<string> ans;
if(temp==0||temp==1)cout<<0<<'\n';
else
{
for(int i=0;i<len;i++)
{
int num=vec[i];
for(int i=0;i<num;i++)ans.push_back("1 a\n");
if(i!=len-1)ans.push_back("2 b\n");
}
// if((temp&-temp)==temp)ans.pop_back();
cout<<ans.size()<<'\n';
for(auto it:ans)cout<<it;
}
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int T=1;
cin>>T;
while(T--)
{
solv();
}
return 0;
}