Se citesc două numere naturale zecimale m şi n. Vom considera reprezentările lor în baza doi. Pentru a le aduce la acelaşi număr de cifre în baza doi vom completa numărul mai mic la stînga cu zero. Astfel ambele reprezentări vor avea x cifre în baza doi. O rotaţie a unui număr în baza doi se obţine tăind prima sa cifră şi adăugînd-o la finalul numărului. Putem forma astfel xrotaţii diferite, incluzînd numărul original.
Cerinţă
Calculaţi cîte din rotaţiile reprezentării numărului m în baza doi se suprapun perfect cu reprezentarea în baza doi a numărului n.
Date de intrare
Fişierul de intrare suprapuneri.in va conţine pe prima linie cele două numere m şi n separate printr-un spaţiu.
Date de ieşire
În fişierul de ieşire suprapuneri.out veţi scrie numărul de suprapuneri ale reprezentărilor binare ale celor două numere.
Restricţii
0 ≤ m, n ≤ 1018
Exemplu
suprapuneri.in suprapuneri.out Eeplicatii
54 27 2 Pentru m = 54 şi n = 27 cele două reprezentări în baza doi vor fi
110110, respectiv 11011. Vom aduce reprezentarea a doua la acelaşi
număr de cifre şi vom avea cele două reprezentări 110110 şi 011011.
Apoi vom efectua rotaţiile şi vom număra cîte egalităţi de reprezentări avem:
110110 ≠ 011011
101101 ≠ 011011
011011 = 011011 egalitate
110110 ≠ 011011
101101 ≠ 011011
011011 = 011011 egalitate
În concluzie vom afişa 2.
Timp maxim de executie/test: 0.2 secunde
Memorie totală: 5MB din care 2MB pentru stivă.
Dimensiunea maximă a sursei 5KB.
va rog ajutati ma ,pls
boiustef:
de unde e problema? pe pbinfo nu am găsit-o...
Răspunsuri la întrebare
Răspuns de
0
Răspuns:
Explicație:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("suprapuneri.in");
ofstream g("suprapuneri.out");
short n,m,i,j,ok,x,c;
short bitm[13], bitn[13];
int main()
{
f >> m >> n;
while (m)
{
++i; bitm[i]=m%2;
m/=2;
}
while (n)
{
++j; bitn[j]=n%2;
n/=2;
}
x=max(i,j);
for (i=1; i<=x; ++i)
{
ok=1;
for (j=1; j<=x; ++j)
{
if (bitm[j]!=bitn[j]) { ok=0; break; }
}
if (ok) ++c;
short bit=bitm[1];
for (int k=1; k<x; ++k) bitm[k]=bitm[k+1];
bitm[x]=bit;
}
g << c;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Informatică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Geografie,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă