Submission

Status:

PPPPPPPPPPPPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: dddrrrr

Problemset: สุ่มสลับ

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-14 12:03:56

#include <bits/stdc++.h>
using namespace std;

int fac(int n){
	if(n==0)return 1;
	if(n<=2)return n;
	return n*fac(n-1);
}

int main(){
	cin.tie(0)->sync_with_stdio(0);
	int n;cin >> n;
	string str ;cin >> str;

	
	long long ans = 0;
	vector <bool> used(26 ,false);
	
	int m = n;
	for(int i=0 ;i<n ;i++){
		int cnt =0 ;
		used[str[i]-'A'] = true;
		
		for(char c = 'A' ;c<str[i] ;c++){
			if(used[c-'A'])continue;
			cnt++;
		}
		//cout << cnt << ' ' << fac(n-i-1) << "\n"; 
		ans += fac(n-i-1) * cnt;
		
	}
	
	cout << ans+1;
	return 0;
}