# PBinfo #2735 – InsertBiti – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se citesc trei numere naturale n m i. Să se schimbe valorile biților lui n de la poziția i spre stânga, cu valorile biților lui m de la 0 până la cel mai semnificativ bit de 1 din m și apoi să se afișeze n.

Numerotare biților se face de la dreapta spre stânga începând de la 0. 

Date de intrare
Programul citește de la tastatură numerele n, m și i, separate prin spații.

Date de ieșire
Programul va afișa pe ecran numărul rezultat după efectuarea cerinței.

Restricții și precizări

numerele n, m sunt se reprezintă pe 64 de biți, fără semn.
pozițiile biților sunt indexate de la 0.

Exemplu:
Intrare

5 6 2
Ieșire

25
Explicație

    i
n=  101
m=110
________
n=11001

## Cod sursă C++

```cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    unsigned long long n,m,k,j=0;
    cin>>n>>m>>k;
    bitset<64> bn(n),bm(m);
        for(int i=k;;i++)
        {
            bn[i]=bm[j];
            if(j==int(log2(m)))
                break;
            j++;
        }
    cout<<bn.to_ullong();
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2735)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2735/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2735/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
