关于二进制循环左/右移
  • 板块灌水区
  • 楼主under_hole
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/7/2 18:41
  • 上次更新2024/7/2 21:15:55
查看原帖
关于二进制循环左/右移
1291460
under_hole楼主2024/7/2 18:41

注:在20个二进制位的意义下进行。
本人二进制右移代码:


vector<int> tow;
inline void get_tow(int num){
	if(num==0)return;
	tow.push_back(num%2);
	get_tow(num/2);
	return;
}
inline long long get_num(){
	long long tmp=0;
	for(int i=0;i<tow.size();i++){
		if(tow[i])tmp+=tow_num[i];
	}
	return tmp;
}
inline long long opt_1(int num,long long val){
	tow.clear();
	get_tow(num);
	while(tow.size()<20)tow.push_back(0);
	for(int i=0;i<val;i++){
		tow.push_back(tow[0]);
		tow.erase(tow.begin());
	}
	return get_num();
}

请问还有更优解吗?

2024/7/2 18:41
加载中...