Cerința
Să se transforme numărul dat de profesoară în baza 16.
Date de intrare
Fișierul de intrare hex.in conține pe prima linie numărul b, scris în baza 2.
Date de ieșire
Fișierul de ieșire hex.out va conține pe prima linie numărul x, reprezentând numărul b scris în baza 16.
Restricții și precizări
1 ≤ lungimea numărului dat ≤ 10000
Cifrele în baza 16 sunt 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Pentru 40% din teste, 1 ≤ lungimea numărului ≤ 20
Dacă îl ajutaţi pe Andino să rezolve problema, el vă va răsplăti cu 100 de puncte.
Exemplu
hex.in
1001010
hex.out
4A
//1300 - in C++
Dennord:
Stii citirea din stdio si functii din cstring?
Răspunsuri la întrebare
Răspuns de
1
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("hex.in");
ofstream g("hex.out");
int n,k;
char s[10005],hexa[10005];
int main()
{
gets(s+1); n=strlen(s+1);
int S=0;
for (int i=1;i<=n;i++)
{
if (s[i]=='1') S+=1<<((n-i)%4);
if ((n-i)%4==0)
{
if (S<=9) hexa[++k]=S+'0';
else hexa[++k]='F'-(15-S);
S=0;
}
}
puts(hexa+1);
return 0;
}
Problema ia 100 de puncte.
#include <cstring>
using namespace std;
ifstream f("hex.in");
ofstream g("hex.out");
int n,k;
char s[10005],hexa[10005];
int main()
{
gets(s+1); n=strlen(s+1);
int S=0;
for (int i=1;i<=n;i++)
{
if (s[i]=='1') S+=1<<((n-i)%4);
if ((n-i)%4==0)
{
if (S<=9) hexa[++k]=S+'0';
else hexa[++k]='F'-(15-S);
S=0;
}
}
puts(hexa+1);
return 0;
}
Problema ia 100 de puncte.
freopen("hex.in","r",stdin);
freopen("hex.out","w",stdout);
Alte întrebări interesante
Biologie,
8 ani în urmă
Biologie,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă