#include<stdio.h>
#include<string.h>
#include<stdlib.h>
unsigned long long int reverse(unsigned long long int num) {
unsigned long long int reversed = 0;
while (num != 0) {
int digit = num % 10;
num /= 10;
reversed = reversed * 10 + digit;
}
return reversed;
}
int main(void)
{
char c[30];
scanf("%s",c);
int condition=1;
int length=strlen(c);
int location;
for (int i=0;i<length;i++){
if(c[i]=='.'){
condition=2;
location=i;
break;
}
else if(c[i]=='/'){
condition=3;
location=i;
break;
}
else if(c[i]=='%'){
condition=4;
location=i;
break;
}
}
int result=0;
switch(condition){
case 1:
unsigned long long int num=atoll(c);
printf("%llu",reverse(num));
break;
case 2:
char num1[11],num2[11];
for (int i=0;i<location;i++){
num1[i]=c[i];
}
for (int j=location+1;j<length;j++){
num2[j-location-1]=c[j];
}
unsigned long long int output1=atoll(num1),output2=atoll(num2);
printf("%llu.%llu",reverse(output1),reverse(output2));
break;
case 3:
char num3[11],num4[11];
for (int i=0;i<location;i++){
num3[i]=c[i];
}
for (int j=location+1;j<length;j++){
num4[j-location-1]=c[j];
}
unsigned long long int output3=atoll(num3),output4=atoll(num4);
printf("%llu/%llu",reverse(output3),reverse(output4));
break;
case 4:
c[length-1]='\0';
unsigned long long int num5=atoll(c);
printf("%llu%%",reverse(num5));
break;
}
return 0;
}
求助,第三点过不去,自己随便测了一下,19位数的能成功,20位数的不行,我不知道第三个测试点是什么数,已经用unsigned longlong int了