AGC 031 | A - Colorful Subsequence
문제.
해법
요점은 다음과 같다.
이 조합을 직접 곱하고 마지막에 0개 조합(빈 문자)을 모두 사용한 부분을 1개를 빼면 답이 필요하다.
코드
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
using ld = long double;
using uint = unsigned int;
using ull = unsigned long long;
const int MOD = 1e9 + 7;
using mint = modint1000000007;
// アルファベットごとに注目すると同じアルファベットを1つ選ぶか0個選ぶかである。
// この組み合わせを各アルファベットでかけて最後に全部0個選んだ1通りを引けば答え
int main() {
ll n;
string s;
cin >> n >> s;
mint ans = 1;
unordered_map<char, ll> cnt;
for (int i = 0; i < n; i++) {
char c = s[i];
cnt[c]++;
}
for (auto [k, v] : cnt) {
ans *= (v + 1);
}
cout << ans.val() - 1 << endl;
}
참고 자료
Reference
이 문제에 관하여(AGC 031 | A - Colorful Subsequence), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/wapa5pow/articles/agc031-a-a103aaccb789cb8c0d1c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)