1. 程式人生 > 其它 >藍橋杯 試題 演算法訓練 二進位制數數

藍橋杯 試題 演算法訓練 二進位制數數

技術標籤:藍橋杯演算法c++

試題 演算法訓練 二進位制數數

資源限制
時間限制:1.0s 記憶體限制:256.0MB
問題描述
  給定L,R。統計[L,R]區間內的所有數在二進位制下包含的“1”的個數之和。
  如5的二進位制為101,包含2個“1”。
輸入格式
  第一行包含2個數L,R
輸出格式
  一個數S,表示[L,R]區間內的所有數在二進位制下包含的“1”的個數之和。
樣例輸入
2 3
樣例輸出
3
資料規模和約定
  L<=R<=100000;

#include <iostream>

using namespace std;

int L;
int R;
int
ans = 0; int main() { cin >> L >> R; for (int i = L; i <= R; i++) { int num = i; while (num) { int x = num % 2; num /= 2; if (1 == x) ans++; } } cout << ans << endl; return 0; }
#include <iostream>

using namespace std;

int L;
int R;
int
ans = 0; int main() { cin >> L >> R; for (int i = L; i <= R; i++) { int num = i; while (num) { int x = num & 1; num = num >> 1; if (1 == x) ans++; } } cout << ans << endl; return 0; }
#include <iostream>

using namespace std;

int
L; int R; int ans = 0; int main() { cin >> L >> R; for (int i = L; i <= R; i++) { int num = i; while (num) { num = num & (num - 1); ans++; } } cout << ans << endl; return 0; }