Submission
Status:
PPPPPPPPPPPPPPPPPPPP
Score: 100
User: pxsit
Problemset: สุ่มสลับ
Language: c
Time: 0.001 second
Submitted On: 2025-01-04 12:24:03
#include <stdio.h>
struct numVal
{
char let;
int val;
};
int fac(int a)
{
if (a <= 0)
{
return 0;
}
else
{
int b = 1;
for (int i = 1; i <= a; i ++)
{
b *= i;
}
return b;
}
}
int main()
{
int n;
scanf("%d\n", &n);
struct numVal norm[12];
struct numVal perm[n];
int removedNfrom[n];
int no = 0;
if (n > 12)
n = 12;
for (int i = 0; i < 12; i ++)
{
norm[i].val = i;
if (i == 0)
{
norm[i].let = 'A';
}
else if (i == 1)
{
norm[i].let = 'B';
}
else if (i == 2)
{
norm[i].let = 'C';
}
else if (i == 3)
{
norm[i].let = 'D';
}
else if (i == 4)
{
norm[i].let = 'E';
}
else if (i == 5)
{
norm[i].let = 'F';
}
else if (i == 6)
{
norm[i].let = 'G';
}
else if (i == 7)
{
norm[i].let = 'H';
}
else if (i == 8)
{
norm[i].let = 'I';
}
else if (i == 9)
{
norm[i].let = 'J';
}
else if (i == 10)
{
norm[i].let = 'K';
}
else if (i == 11)
{
norm[i].let = 'L';
}
}
for (int i = 0; i < n; i ++)
{
removedNfrom[i] = 0;
perm[i].let = ' ';
perm[i].val = 0;
scanf("%c", &perm[i].let);
for (int j = 0; j < n; j ++)
{
if (perm[i].let == norm[j].let)
{
perm[i].val = norm[j].val;
break;
}
}
}
for (int i = 0; i < n; i ++)
{
no += fac(n - i - 1) * (perm[i].val);
int ind = 0;
for (int j = 0; j < 12; j ++)
{
char usedlet;
if (perm[i].let == norm[j].let)
{
ind = perm[i].val - 1;
break;
}
}
for (int j = 0; j < n; j ++)
{
if (perm[j].val > ind)
{
perm[j].val --;
}
}
}
printf("%d", no + 1);
}