Advertisement
MAGCARI

Number 1

Feb 18th, 2023 (edited)
895
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. /*
  2.               9
  3.       4       1       4
  4.   2   0   2   1   2   0   2
  5. 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1
  6.  
  7.       7
  8.   3   1   3
  9. 1 1 1 1 1 1 1
  10. */
  11. /*
  12.     Task    : _example
  13.     Author  : Phumipat C. [MAGCARI]
  14.     Language: C++
  15.     Created : 19 February 2023 [10:59]
  16. */
  17. #include<bits/stdc++.h>
  18. using namespace std;
  19. int divide(int leftBoundary,int rightBoundary,int number,int leftConsidering,int rightConsidering){
  20.     if(rightBoundary < leftConsidering || leftBoundary > rightConsidering)  return 0;
  21.     if(number <= 1) return number;
  22.     int mid = (leftBoundary+rightBoundary-1)/2;
  23.     int leftResult = divide(leftBoundary,mid,number/2,leftConsidering,rightConsidering);
  24.     int middleResult = divide(mid+1,mid+1,number%2,leftConsidering,rightConsidering);
  25.     int rightResult = divide(mid+2,rightBoundary,number/2,leftConsidering,rightConsidering);
  26.     return leftResult + middleResult + rightResult;
  27. }
  28. int main(){
  29.     int startNumber,l,r;
  30.     scanf("%d %d %d",&startNumber,&l,&r);
  31.     int n = 1;
  32.     while(n < startNumber)  n = (2*n) + 1;
  33.     printf("%d\n",divide(1,n,startNumber,l,r));
  34.     return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement