输入的x是y的进制,x是9就把y转10进制,x是10就把y转9进制,自己试了几遍,ai也看了几遍也没发现问题,但运行输出总是一些负值。。。
#include<stdio.h>
#include<string.h>
char ANS[20];
int NOT(int x, char y[]) {
for (int i = 0; i < strlen(y); i++) {
if (y[i] - '0' >= x) return 1;
}
return 0;
}
long long TOTEN(char y[]) {
long long ans = 0, k = 1;
for (int i = strlen(y) - 1; i >= 0; i--) {
ans += (y[i] - '0') * k;
k *= 9;
}
return ans;
}
void TONINE(char y[]) {
long long prea = 0, prek = 1;
for (int i = strlen(y) - 1; i >= 0; i--) {
prea += (y[i] - '0') * prek;
prek *= 10;
}
int index = 0;
while (prea > 0) {
ANS[index] = prea % 9 + '0';
index++;
prea /= 9;
}
ANS[index] = '\0';
}
int main() {
int X, j = 0;
char c;
char Y[20];
scanf("%d", &X);
while ((c = getchar()) != '\n') {
Y[j] = c;
j++;
}
Y[j] = '\0';
if (NOT(X, Y)) {
printf("DATA ERROR!");
} else if (X == 9) {
printf("%lld", TOTEN(Y)); // 使用 %lld 打印 long long
} else if (X == 10) {
TONINE(Y);
for (int i = strlen(ANS) - 1; i >= 0; i--) {
printf("%c", ANS[i]);
}
}
return 0;
}
#include<string.h>
char ANS[20];
int NOT(int x, char y[]) {
for (int i = 0; i < strlen(y); i++) {
if (y[i] - '0' >= x) return 1;
}
return 0;
}
long long TOTEN(char y[]) {
long long ans = 0, k = 1;
for (int i = strlen(y) - 1; i >= 0; i--) {
ans += (y[i] - '0') * k;
k *= 9;
}
return ans;
}
void TONINE(char y[]) {
long long prea = 0, prek = 1;
for (int i = strlen(y) - 1; i >= 0; i--) {
prea += (y[i] - '0') * prek;
prek *= 10;
}
int index = 0;
while (prea > 0) {
ANS[index] = prea % 9 + '0';
index++;
prea /= 9;
}
ANS[index] = '\0';
}
int main() {
int X, j = 0;
char c;
char Y[20];
scanf("%d", &X);
while ((c = getchar()) != '\n') {
Y[j] = c;
j++;
}
Y[j] = '\0';
if (NOT(X, Y)) {
printf("DATA ERROR!");
} else if (X == 9) {
printf("%lld", TOTEN(Y)); // 使用 %lld 打印 long long
} else if (X == 10) {
TONINE(Y);
for (int i = strlen(ANS) - 1; i >= 0; i--) {
printf("%c", ANS[i]);
}
}
return 0;
}


