【手写代码】计算1-n中总共有多少二进制1
2024-09-01 04:04:03
#include<bits/stdc++.h>
#include<vector>
using namespace std; //时间复杂度:O(N)
int f(int x)
{
int dp[x+1];
memset(dp,0,sizeof(dp));
int sum=0;
for(int i=1;i<=x;i++)
{
dp[i]=dp[i&(i-1)]+1;
sum+=dp[i];
}
return sum;
}
/**
思路:
i&(i-1)每次能去掉一个1,所以只要求出去掉1的数对应的二进制中1的个数
再加上1就知道了i的二进制中1的个数 状态转移方程:
dp[i]=dp[i&(i-1)]+1 dp[i]:
数字i的二进制中1的个数
*/
int main()
{
cout<<f(5)<<endl;
return 0;
}
最新文章
- 2016年最新mac下vscode配置golang开发环境支持debug
- Linux Shell 脚本调试
- python IOError: [Errno 0] Error
- SQL Server Database 维护计划创建完整的备份策略
- Python 字符串分割的方法
- Windows下使用GCC编译器
- Android 自定义RadioButton实现
- HTML5与CSS3权威指南.pdf5
- oracle job 定时执行 存储过程
- referencedColumnName
- php扩展memcache的安装
- C# 代码规范和质量检查工具 StyleCop.Analyzers
- qcharts编译
- mysql数据库查询和聚合函数
- Redis深入学习笔记(六)Redis内存分配
- 移动端热更新方案(iOS+Android)
- 《Java程序设计》win10系统学前准备
- python 将文件大小转换为human readable 的大小表示
- 雷林鹏分享:XML 简介
- Continuation-passing style
热门文章
- 电脑按键混乱,好像被锁定了Alt键
- ABP 02 解决 界面为英文
- linux命令之------which命令/cp命令/Head及tail命令/grep命令/pwd命令/cd命令/df命令/mkdir命令/mount及umount命令/ls命令/history命令/ifconfig命令/ping命令/useradd命令/命令passwd/kill命令/su命令/clear命令/ssh命令/tar解压缩/远程拷贝scp
- mysql课外积累
- Vue的Key属性,v-for和v-if,v-if/v-show,v-pre不渲染,v-once只渲染一次
- SQL Server数据库应用技术
- Kubeasz部署K8s基础测试环境简介
- 小程序支持原生async方法
- 如何将 普通代码变成 java lamband表达式
- Google Kick Start 2019 C轮 第一题 Wiggle Walk 题解