关注
😭 我第三题好不容易写出来了常数复杂度的算法,结果时间还是不够,没交上。
#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;
}
查看原帖
点赞 评论
相关推荐
12-21 15:20
重庆邮电大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客2025仙途报告 #
3463次浏览 105人参与
# 工作两年,想和老板谈涨薪怎么说 #
38761次浏览 175人参与
# 2025年终总结 #
176459次浏览 2982人参与
# 你面试体验感最差/最好的公司 #
21471次浏览 350人参与
# 秋招落幕,你是He or Be #
14901次浏览 282人参与
# 一人说一个提前实习的好处 #
13143次浏览 220人参与
# 礼物开箱Plog #
1359次浏览 60人参与
# 今年你最想重开的一场面试是? #
5255次浏览 73人参与
# 重来一次,你会对开始求职的自己说 #
6768次浏览 167人参与
# 找工作,行业重要还是岗位重要? #
85648次浏览 1699人参与
# 实习没事做是福还是祸? #
18375次浏览 268人参与
# 机械制造秋招总结 #
97331次浏览 878人参与
# 团建是“福利”还是是 “渡劫” #
7973次浏览 159人参与
# 工作中听到最受打击的一句话 #
7916次浏览 124人参与
# 考公VS就业,你怎么选? #
88074次浏览 496人参与
# 移动求职进展汇总 #
17902次浏览 143人参与
# 网易求职进展汇总 #
172487次浏览 1422人参与
# 你小心翼翼的闯过多大的祸? #
11822次浏览 172人参与
# 哪些行业值得去? #
14374次浏览 74人参与
# 国央企薪资爆料 #
136564次浏览 597人参与
SHEIN希音公司福利 278人发布