BJ 2908
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# define T 1
# define F 0
# define LEN 400
# define Decimal 10
# define Mod(a) ((int)(a%10))
# define Div(a) ((int)(a/10))
typedef struct LargeNumber {
int num1;
int num2;
char bufferOne[LEN];
char bufferTwo[LEN];
char RevOne[LEN];
char RevTwo[LEN];
}LargeNumber;
// __ .1
void __init__(LargeNumber** LarSma) {
(*LarSma) = (LargeNumber*)malloc(sizeof(LargeNumber));
if ((*LarSma) == NULL) { exit(1); }
else { // (*LarSma) != NULL
memset((*LarSma), 0, sizeof(LargeNumber));
}
} // end of __init__ function
// __ 2
void __numberSetting__(LargeNumber** LarSma) {
int i = 0; // index
int quo = 0;
int rem = 0;
scanf("%d %d", &(*LarSma)->num1, &(*LarSma)->num2);
while (T) {
while (T) {
//234
rem = Mod((*LarSma)->num1); // [4][3][2]
(** LarSma).RevOne[i++] = (char)rem + '0';
if ((*LarSma)->num1 < 10) { break; }
else { //(*LarSma)->num1 >= 10
(*LarSma)->num1 = Div((*LarSma)->num1); // [23][2]
}
}
i = 0;
while (T) {
//234
rem = Mod((*LarSma)->num2); // [4][3][2]
(** LarSma).RevTwo[i++] = (char)rem + '0';
if ((*LarSma)->num2 < 10) { break; }
else { //(*LarSma)->num1 >= 10
(*LarSma)->num2 = Div((*LarSma)->num2); // [23][2]
}
}
break;
}
/* 123
# define Mod(a) ((int)(a%10))
# define Div(a, b) ((int)(b/a))
int bufferOneLength = 0;
int bufferTwoLength = 0;
itoa((*LarSma)->num1, (*LarSma)->bufferOne, Decimal);
itoa((*LarSma)->num2, (*LarSma)->bufferTwo, Decimal);
bufferOneLength = strlen((*LarSma)->bufferOne)-1;
bufferTwoLength = strlen((*LarSma)->bufferTwo)-1;
for (i = bufferOneLength; i >= 0; i--) {
(*LarSma)->RevOne[j++] = (*LarSma)->bufferOne[i];
} j = 0;
for (i = bufferTwoLength; i >= 0; i--) {
(*LarSma)->RevTwo[j++] = (*LarSma)->bufferTwo[i];
}
*/
} // end of __numberSetting__ function
void __LargeAndSmall__(LargeNumber** LarSma) {
int i; // index
// case __1
if (strlen((** LarSma).RevOne) > strlen((** LarSma).RevTwo)){
printf("%s\n", (** LarSma).RevOne);
}
// case __2
else if (strlen((** LarSma).RevOne) < strlen((** LarSma).RevTwo)) {
printf("%s\n", (** LarSma).RevTwo);
}
// case __3
else {
for (i = 0; i < strlen((** LarSma).RevOne); i++) {
if ((** LarSma).RevOne[i] > (** LarSma).RevTwo[i]) {
printf("%s\n", (** LarSma).RevOne);
break;
}
else if ((** LarSma).RevOne[i] < (** LarSma).RevTwo[i]) {
printf("%s\n", (** LarSma).RevTwo);
break;
}
else {
continue;
}
}
}
} // end of __LargeAndSmall__ function
int main(void) {
LargeNumber* start_2908 = NULL;
__init__(&start_2908);
__numberSetting__(&start_2908);
__LargeAndSmall__(&start_2908);
return 0;
} // end of main function