112.c
来自「平时acm训练时ac的源代码」· C语言 代码 · 共 161 行
C
161 行
/*
112. a^b-b^a
Accepted 66 ms 114 kb
*/
#include <stdio.h>
int main()
{
long A[25], B[25], C[25];
char c;
int i, ai, bi, j, k;
for (i=0; i<24; i++)
{
A[i]=0;
B[i]=0;
}
scanf("%d %d", &ai, &bi);
for (A[24]=ai, i=1; i<bi; i++)
{
for (k=0; k<25; k++)
{
C[k] = A[k];
}
for (k=1; k<ai; k++)
{
A[0] = A[0]+C[0];
for (j=1; j<25; j++)
{
A[j]=A[j]+C[j];
if (A[j]>99999999)
{
A[j-1] = A[j-1]+1;
A[j] = A[j]-100000000;
}
}
}
}
for (B[24]=bi, i=1; i<ai; i++)
{
for (k=0; k<25; k++)
{
C[k] = B[k];
}
for (k=1; k<bi; k++)
{
B[0] = B[0]+C[0];
for (j=1; j<25; j++)
{
B[j]=B[j]+C[j];
if (B[j]>99999999)
{
B[j-1] = B[j-1]+1;
B[j] = B[j]-100000000;
}
}
}
}
for (i=0; i<25; i++)
{
if (A[i]>B[i])
{
c=1;
break;
}
else if (B[i]>A[i])
{
c=0;
break;
}
else if (24==i)
{
c=1;
break;
}
}
if (1==c)
{
for (i=0; A[i]==0;)
{
i++;
}
for (j=24; j>=i; j--)
{
A[j] = A[j] - B[j];
if (A[j]<0)
{
A[j] = A[j]+100000000;
for (k=j-1; 0==A[k]; k--)
{
A[k] = A[k]+99999999;
}
A[k] = A[k]-1;
}
}
}
else
{
for (i=0; B[i]==0; i++)
{
}
for (j=24; j>=i; j--)
{
A[j] = B[j] - A[j];
if (A[j]<0)
{
A[j] = A[j]+100000000;
for (k=j-1; 0==B[k]; k--)
{
B[k] = B[k]+99999999;
}
B[k] = B[k]-1;
}
}
}
if (0==c)
{
printf("-");
}
for (i=0; i<25; i++)
{
if (0!=A[i] || 24==i)
{
printf("%ld", A[i]);
for (j=i+1; j<25; j++)
{
if (A[j]<10)
{
printf("0000000");
}
else if (A[j]<100)
{
printf("000000");
}
else if (A[j]<1000)
{
printf("00000");
}
else if (A[j]<10000)
{
printf("0000");
}
else if (A[j]<100000)
{
printf("000");
}
else if (A[j]<1000000)
{
printf("00");
}
else if (A[j]<10000000)
{
printf("0");
}
printf("%ld", A[j]);
}
break;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?