腾讯校招-数字转换机-c++

腾讯校招-数字转换机-c++_第1张图片

思路:
作者:疯兔子链接: https://www.nowcoder.com/discuss/42110来源:牛客网其实首先可以进行一个公式转换。
假设总共进行了n次 2操作, m次+1操作,第i次+1操作后面进行了ki次2操作。那么:
A = a 2n+ 2k1+ … + 2km
B = b
2n+ 2k1+ … + 2km, 其中,n >= k1 >= k2 >= … >= km >= 0
例如,假设a=101,
((a+1+1) 2+1)2+1 =((101 + 1 + 1) 2 +1)2 + 1 = 101 * 2 * 2 + 1 * 2 * 2 + 1 * 2 *2 + 1 * 2 + 1 = a * 22+22+22+21+20

n=2, m=4, k1=2, k2=2, k3=1, k4=0

有了这个公式就好办了,只需要枚举n的值,然后判断 A - a2n== B - b2n,再计算m的值即可。

#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX - 1)

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
/*解题思路:*/
int main(){
    int n;
    while(cin>>n){

        cout<< <

你可能感兴趣的:(腾讯校招-数字转换机-c++)