pku2718.cpp
来自「这是ACM 方面的资料 是PKU的 北京大学的出来的」· C++ 代码 · 共 102 行
CPP
102 行
#include <stdio.h>
#include <string.h>
int main()
{
int t, n, i, num1, num2, mindis, j;
char s[100];
int dig[10], u1, u2, p;
scanf("%d\n", &t);
while (t--)
{
gets(s);
if (s[0] == '\0')
{
break;
}
n = strlen(s);
n = (n + 1) / 2;
for (i = 0; i < n; i++)
{
dig[i] = s[2 * i] - '0';
}
if (n == 2 && dig[0] == 0)
{
printf("%d\n", dig[1]);
continue;
}
if (n % 2 == 1)
{
for (i = n - 1, num2 = 0; i >= (n + 1) / 2; i--)
{
num2 *= 10;
num2 += dig[i];
}
if (dig[0] == 0)
{
num1 = 10 * dig[1];
}
else
{
num1 = 10 * dig[0] + dig[1];
}
for (i = 2; i < (n + 1) / 2; i++)
{
num1 *= 10;
num1 += dig[i];
}
printf("%d\n", num1 - num2);
}
else
{
mindis = 1000000;
for (i = 0; i < n - 1; i++)
{
if (dig[i] == 0)
{
continue;
}
u1 = i;
u2 = i + 1;
num2 = dig[u2];
num1 = dig[u1];
for (j = 0, p = 0; p < n / 2 - 1; p++, j++)
{
while (j == u1 || j ==u2)
{
j++;
}
num2 *= 10;
num2 += dig[j];
}
for (j = n - 1, p = 0; p < n / 2 - 1; p++, j--)
{
while (j == u1 || j ==u2)
{
j--;
}
num1 *= 10;
num1 += dig[j];
}
if (num2 - num1 < mindis)
{
mindis = num2 - num1;
}
}
printf("%d\n", mindis);
}
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?