📄 2312764_ac_0ms_52k.c
字号:
# include <stdio.h>
# include <ctype.h>
# include <string.h>
# include <stdlib.h>
# define f(a) islower(a)?36+a-'a':(isdigit(a)?a-'0':a-'A'+10)
# define g(b) b<10?'0'+b:(b<36?'A'+b-10:'a'+b-36)
int w1, w2, n;
char ans[25];
void cal(char *num)
{
int i, t, s, l, len, mark;
char q[500];
len = strlen(num);
i = t = l = 0;
mark = 1;
while(1&&mark)
{
while(t<w2&&i<len)
{
t *= w1;
t += f(num[i]);
q[i] = '0';
i++;
}
s = t / w2;
if(!s)
mark = 0;
if(mark)
q[i-1] = g(s);
t -= s*w2;
}
ans[n++] = g(t);
q[i] = '\0';
for(i = 0; i < len; i++)
if(q[i]!='0')
{
cal(q);
break;
}
}
int input()
{
int l, i, j, c, mark = 0;
char num[21];
scanf("%s",num);
if(num[0]=='*')
return 0;
if(num[0]<='9'&&num[0]>=0)
{
i = 0;
mark = 1;
while(num[i]=='0')
i++;
strcpy(num,&num[i]);
w1 = 10; w2 = 26;
}
else
{
printf("%s",num);
l = strlen(num);
for(i = 1; i < 23-l; i++)
printf(" ");
for(i = 0; i < l; i++)
{
if(num[i]<='i')
num[i] = '1'+num[i]-'a';
else
num[i] = 'A'+num[i]-'j';
}
w1 = 26; w2 = 10;
}
n = 0;
cal(num);
if(mark)
{
for(i = n-1; i >= 0; i--)
{
c = f(ans[i]);
printf("%c",'a'+c-1);
}
for(i = 1; i < 23-n; i++)
printf(" ");
c = 1;
n = strlen(num);
for(i = 0,j=n%3; i < n; i++)
{
j-=c;
printf("%c",num[i]);
j%=3;
if(j==0)
{
c = -1;
if(i!=n-1)
printf(",");
}
}
printf("\n");
}
else
{
c = 1;
for(i = n-1,j=n%3; i >= 0; i--)
{
j-=c;
printf("%c",ans[i]);
j%=3;
if(j==0)
{
c = -1;
if(i)
printf(",");
}
}
printf("\n");
}
return 1;
}
int main()
{
while(input());
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -