Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Palindrom in baza 16 : August 24, 2012, 01:04:28
Idee pentru problema 1: nu transform numarul in baza 16, ci folosesc operatii pe biti + proprietatea ca o cifra in baza 16 reprezinta 4 cifre in baza 2.
Cod:
//...presupun ca n este de tip int (pe 32 biti).
#include <iostream>
using namespace std;

int main(){
cout<<"Numarul in baza 10: ";
int n;
cin>>n;
if(n<0) n=-n; //presupun ca semnul nu conteaza

int rev=0;
for(int i=0; i<=32 && n>>i; i+=4)
(rev<<=4) |= (n>>i)&15;   //adaug grupurile de cate 4 biti

if(n==rev) cout<<"Numarul este palindrom in baza 16.\n";
else cout<<"Numarul nu e palindrom in baza 16.\n";

cout<<"Apasa ENTER...";
cin.get();
cin.get();
}
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines