Submission

Status:

PPPPPPPPPPPPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: theem1502

Problemset: สุ่มสลับ

Language: c

Time: 0.002 second

Submitted On: 2025-09-21 22:17:42

#include <stdio.h>

int factorial(int num) {
    int w = 1;

    if(num == 0) {
        return 0;
    }

    for (int i = 1; i <= num; i++) {
        w *= i;
    }
    return w;
}

int main() {
    int prevchar= 100;
    int num;
    char mainstring[27];
    scanf("%d %s", &num, mainstring);
    int indexsum = 0;
    int accumulate = 0;
    int marked[15] = {0};
    for (int i  = 0; i < num; i++) {
        
        int currentnum = mainstring[i] - 'A';
        marked[currentnum] = 1;
        accumulate = 0;
for (int i = 0; i < currentnum; i++) {
    accumulate += marked[i];
}

        currentnum -= accumulate;


        prevchar = currentnum;
        long long something = factorial(num-i-1);
        indexsum += something * currentnum;
        

    }
    printf("%d", indexsum + 1);
}