U513139 求调 玄关
  • 板块题目总版
  • 楼主shenqing_QAQ
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/7 16:01
  • 上次更新2024/12/7 18:24:37
查看原帖
U513139 求调 玄关
884905
shenqing_QAQ楼主2024/12/7 16:01
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL n;
LL po2[64],po3[64];
LL res;
LL get_num(LL i,LL j){
	return po2[i] * po3[j];
}
int main(){
	cin >> n;
	po2[0] = 1,po3[0] = 1;
	for(LL i = 1; i <= 63; i ++) po2[i] = po2[i - 1] * 2;
	for(LL i = 1; i <= 37; i ++) po3[i] = po3[i - 1] * 3; 
	LL now2 = 0,now3 = 0;
	for(LL i = 0; i <= 63; i ++)
		for(LL j = 0; j <= 37 && i + j <= 63; j ++)
			if(get_num(i,j) >= n && get_num(i,j) < 2 * n && get_num(i,j) > get_num(now2,now3) && i + j > now2 + now3)
				now2 = i,now3 = j;
	while(now3 || now2){
		if(now3) now3 --;
		else now2 --;
		res ++;
		if(now2 + now3 == 0) break;
		LL tmp2 = 0,tmp3 = 0;
		for(LL i = 0; i <= 63; i ++)
			for(LL j = 0; i + j <= 63 && j <= 37; j ++)
				if(get_num(i,j) >= get_num(now2,now3) && get_num(i,j) < get_num(now2,now3) * 2)
					if(i + j >= tmp2 + tmp3 && get_num(i,j) > get_num(tmp2,tmp3))tmp2 = i,tmp3 = j;
		now2 = tmp2,now3 = tmp3;
	}
	printf("%lld",res);
	return 0;
} 
2024/12/7 16:01
加载中...