Descripción del problema
Ingrese una cadena numérica hexadecimal positiva con no más de 8 dígitos desde el teclado, conviértala en un número decimal positivo y envíela.
Nota: 10 ~ 15 en números hexadecimales están representados por letras mayúsculas en inglés A, B, C, D, E y F respectivamente.Entrada de muestra
FFFF
Salida de muestra
65535
Código de implementación:
#include<stdio.h>
#include<math.h>
#include<string.h>
using namespace std;
int main()
{
int n,i,j,a[100010];
char c[100010];
double sum=0;
int r=1,t=0;
scanf("%s",c);
for(i=strlen(c)-1;i>=0;i--)
{
if(c[i] >= 'A' && c[i] <= 'F')
{
sum += (c[i] - 'A'+10)*pow(16,t++); //默认pow的返回值是double型
}
else
{
sum += (c[i] - '0')*pow(16,t++);
}
}
printf("%.0lf\n",sum);
return 0;
}
75 minutos Análisis de causa:
Al principio, usé int para definir la suma y envié 75 puntos. Luego lo cambié a long long. Probé los datos FFFFFFFF (8F), y todavía se desbordaba .
Así que solo use double , pruébelo y envíelo sin desbordamiento.