https://ac.nowcoder.com/acm/contest/11228/D
- 观察这四种操作,a = 0,b = 1,b可以乘上x,且a可以加上b
- 观(1234)x ,x表示为x进制,则(1234)x = 1* pow(x,3) + 2* pow(x,2)+3* pow(x,1)+4 * pow(x,0)
- 此时已经发现了构造方法,即将n这个十进制的数转换为x进制,再根据上面列的进制拆分来还原操作,最后把a变为x
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int t;
int n,x;
int a,b;
int ans[500];
struct node{
int aa;
char bb;
}arr[1000];
int main(){
cin>>t;
while(t--){
cin>>n>>x;
int num = n;
int cnt = 0;
while(num!=0){
ans[++cnt] = num%x;
num /= x;
}
int ansl = 0;
for(int i =cnt;i>=1;i--){
ansl += (ans[i]+1);
}
cout<<ansl<<endl;
for(int i = 1;i<=cnt;i++){
for(int j = 1;j<=ans[i];j++){
cout<<1<<" "<<"a"<<endl;
}
cout<<2<<" "<<'b'<<endl;
}
}
}