P9736题解
P9736题目解析:
看到题目,
发现
然后我们发现,每次进行 A A A 的操作时,变量
问题来了,是不是两个数都可以作为基准呢?
从本质上来讲,其实是可以的,但题目中有一句话:
请你使用该种操作不超过 100 次
所以就不行,因为大的数要的操作次数自然也会变多,但是你并不能保证大的数的操作数不超过 100 次,而小的数一定比大的更优,所以该选小的,这篇题解和这篇题解在这方面就有问题,但是这题并不卡这一点。
注意:
这篇题解就没开 long long。
AC Code:
#include<bits/stdc++.h>
#define int long long
//切记,一定开long long
using namespace std;
int x,y;
vector<string>s;
signed main(){
cin >> x >> y;
if(y<x){
//选择小的切
while(y){
//判断是否要加
if(y%2==0)s.push_back("A A A");//A*=2
else{
s.push_back("A C C");//C+=A
s.push_back("A A A");//A*=2
}
y/=2;
}
}
else{
while(x){
//判断是否要加
if(x%2==0)s.push_back("B B B");//B*=2
else{
s.push_back("B C C");//C+=B
s.push_back("B B B");//B*=2
}
x/=2;
}
}
cout << s.size() << "\n";
for(int i = 0;i<s.size();i++)cout << s[i] << "\n";//输出
cout << "C";//答案存在C中,输出C
return 0;
}
结束语:此题难度并不大,但仍有很多细节需要注意,值得回味。