关注
😭 我第三题好不容易写出来了常数复杂度的算法,结果时间还是不够,没交上。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
unsigned long long n;
cin >> n;
if (n == 0)
{
cout << 1 << endl;
return 0;
}
else if (n == 1 || n == 2)
{
cout << 2 << endl;
return 0;
}
else if (n == 3)
{
cout << 3 << endl;
return 0;
}
string binaryForm;
bool flag = false;
for (unsigned long long i = (long long)1 << 63; i != 0; i = i >> 1)
{
if (i & n)
{
binaryForm += '1';
flag = true;
}
else
{
if (flag)
{
binaryForm += '0';
}
}
}
int length = binaryForm.size();
long long count = 1;
int curr = 1;
for (int i = 0; i < length - 1; i++)
{
if (i % 2 == 0 && i != 0)
{
curr *= 2;
}
count += curr;
}
string subLeft = binaryForm.substr(1, (length - 1) / 2);
int times = 1;
for (int i = subLeft.size() - 1; i >= 0; i--)
{
if (subLeft[i] == '1')
{
count += times;
}
times *= 2;
}
string newBinaryForm = "1" + subLeft;
if (length % 2)
{
subLeft.pop_back();
}
reverse(subLeft.begin(), subLeft.end());
newBinaryForm += subLeft + "1";
if (newBinaryForm <= binaryForm)
{
count++;
}
cout << count << endl;
return 0;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
381828次浏览 3798人参与
# ai智能作图 #
12490次浏览 196人参与
# 北方华创开奖 #
64963次浏览 519人参与
# 地方国企笔面经互助 #
6166次浏览 14人参与
# 我的实习求职记录 #
6109143次浏览 83853人参与
# 发工资后,你做的第一件事是什么 #
5156次浏览 20人参与
# 阿里云管培生offer #
50341次浏览 1501人参与
# 硬件兄弟们 甩出你的华为奖状 #
76315次浏览 617人参与
# 如果再来一次,你还会选择这个工作吗? #
104065次浏览 1046人参与
# 哪些公司校招卡第一学历 #
31541次浏览 89人参与
# 如果有时光机,你最想去到哪个年纪? #
27190次浏览 562人参与
# 华为工作体验 #
109587次浏览 853人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
9122次浏览 185人参与
# 还记得你第一次面试吗? #
30193次浏览 425人参与
# 许愿池 #
216791次浏览 2543人参与
# 腾讯求职进展汇总 #
206057次浏览 1689人参与
# 你觉得第一学历对求职有影响吗? #
15939次浏览 129人参与
# 产运销实习日记 #
27879次浏览 323人参与
# 阿里求职进展汇总 #
71920次浏览 785人参与
# 上班到公司第一件事做什么? #
14632次浏览 165人参与
# 实习,投递多份简历没人回复怎么办 #
2429921次浏览 34650人参与
# 实习中的菜狗时刻 #
280162次浏览 2759人参与