首页 > 代码库 > UVALive 6527 Counting ones dfs(水
UVALive 6527 Counting ones dfs(水
题目链接:点击打开链接
#include <cstdio> #include <vector> using namespace std; typedef long long ll; ll re; vector<int> p; void dfs(int dep, int g) { if (dep == 0) return ; if (p[dep-1] == 1) { re += (dep-1) * (1ll<< (dep-2)); re += g * (1ll << (dep-1)); } dfs(dep-1, g+p[dep-1]); } ll C(ll x) { if (x == 0) return 0; p.clear(); re = 0; while (x>0) { p.push_back(x%2); x /= 2; } for (int i = 0; i < (int)p.size(); ++i) re += p[i]; dfs(p.size(), 0); return re; } int main() { ll A, B; while (~scanf("%lld%lld", &A, &B)) printf("%lld\n", C(B) - C(A-1)); return 0; }
UVALive 6527 Counting ones dfs(水
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。