#4815
Se consideră șirul de litere mici ale alfabetului englez A[1], ..., A[N].
Fie succesiunea de caractere alăturate din șir A[x], A[x + 1], ..., A[y], unde 1 ≤ x ≤ y ≤ N, pe care o notăm cu A[x, y]. Pentru oricare literă mică a alfabetului englez l, definim range(l) ca fiind 0, dacă l apare cel mult o dată în A[x, y]. Altfel, valoarea range(l) este egală cu diferența dintre cea mai mare și cea mai mică poziție pe care litera l apare în A[x, y].
Șirul suport asociat lui A[x, y] este șirul de caractere minim lexicografic ce conține fiecare literă l de range(l) ori. Asupra șirului se efectuează două tipuri de operații:
c și poziția poz, se înlocuiește A[poz] cu c.x, y, se generează șirul suport al lui A[x, y].C = 1: determinați șirul suport minim lexicografic dintre cele obținute în urma tuturor operațiilor de generare.C = 2: pentru fiecare operație de generare dată, determinați numărul de anagrame distincte ale șirului suport obținut, modulo 1999999973.| Problema | anagrame6 | Operații I/O |
anagrame.in/anagrame.out
|
|---|---|---|---|
| Limita timp | 1 secunde | Limita memorie |
Total: 256 MB
/
Stivă 64 MB
|
| Id soluție | #59284684 | Utilizator | |
| Fișier | anagrame6.cpp | Dimensiune | 3.71 KB |
| Data încărcării | 24 Septembrie 2025, 00:21 | Scor/rezultat | Eroare de compilare |
anagrame6.cpp:9:22: warning: missing terminating ' character [enabled by default] #define MOD 1'999'999'973 ^ anagrame6.cpp:17:23: warning: multi-character character constant [-Wmultichar] p = (ll)p * b % MOD; ^ anagrame6.cpp:17:7: error: missing terminating ' character p = (ll)p * b % MOD; ^ anagrame6.cpp:18:21: warning: multi-character character constant [-Wmultichar] b = (ll)b * b % MOD; ^ anagrame6.cpp:18:5: error: missing terminating ' character b = (ll)b * b % MOD; ^ anagrame6.cpp:29:37: warning: multi-character character constant [-Wmultichar] fact[i] = (ll)fact[i - 1] * i % MOD; ^ anagrame6.cpp:29:5: error: missing terminating ' character fact[i] = (ll)fact[i - 1] * i % MOD; ^ anagrame6.cpp:157:41: warning: multi-character character constant [-Wmultichar] div = (ll)div * fact[p.app] % MOD; ^ anagrame6.cpp:157:11: error: missing terminating ' character div = (ll)div * fact[p.app] % MOD; ^ anagrame6.cpp:160:57: warning: multi-character character constant [-Wmultichar] printf("%lld\n", (ll)fact[count] * fastexp(div, MOD - 2) % MOD); ^ anagrame6.cpp:160:9: error: missing terminating ' character printf("%lld\n", (ll)fact[count] * fastexp(div, MOD - 2) % MOD); ^ anagrame6.cpp:160:68: warning: multi-character character constant [-Wmultichar] printf("%lld\n", (ll)fact[count] * fastexp(div, MOD - 2) % MOD); ^ anagrame6.cpp:160:9: error: missing terminating ' character printf("%lld\n", (ll)fact[count] * fastexp(div, MOD - 2) % MOD); ^ anagrame6.cpp: In function 'int fastexp(int, int)': anagrame6.cpp:9:14: error: expected ';' before '\x393939' #define MOD 1'999'999'973 ^ anagrame6.cpp:17:23: note: in expansion of macro 'MOD' p = (ll)p * b % MOD; ^ anagrame6.cpp:9:14: error: expected ';' before '\x393939' #define MOD 1'999'999'973 ^ anagrame6.cpp:18:21: note: in expansion of macro 'MOD' b = (ll)b * b % MOD; ^ anagrame6.cpp: In function 'void calcFact()': anagrame6.cpp:9:14: error: expected ';' before '\x393939' #define MOD 1'999'999'973 ^ anagrame6.cpp:29:37: note: in expansion of macro 'MOD' fact[i] = (ll)fact[i - 1] * i % MOD; ^ anagrame6.cpp: In function 'int comp(std::vector<P>&, std::vector<P>&)': anagrame6.cpp:99:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < a.size() && i < b.size(); i++) { ^ anagrame6.cpp:99:46: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < a.size() && i < b.size(); i++) { ^ anagrame6.cpp:100:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (a[i].comp(b[i], i == a.size() - 1 || i == b.size() - 1) != 0) ^ anagrame6.cpp:100:62: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (a[i].comp(b[i], i == a.size() - 1 || i == b.size() - 1) != 0) ^ anagrame6.cpp:101:46: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] return a[i].comp(b[i], i == a.size() - 1 || i == b.size() - 1); ^ anagrame6.cpp:101:67: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] return a[i].comp(b[i], i == a.size() - 1 || i == b.size() - 1); ^ anagrame6.cpp: In function 'int main()': anagrame6.cpp:9:14: error: expected ';' before '\x393939' #define MOD 1'999'999'973 ^ anagrame6.cpp:157:41: note: in expansion of macro 'MOD' div = (ll)div * fact[p.app] % MOD; ^ anagrame6.cpp:9:14: error: expected ')' before '\x393939' #define MOD 1'999'999'973 ^ anagrame6.cpp:160:57: note: in expansion of macro 'MOD' printf("%lld\n", (ll)fact[count] * fastexp(div, MOD - 2) % MOD); ^ anagrame6.cpp:9:14: error: expected ')' before '\x393939' #define MOD 1'999'999'973 ^ anagrame6.cpp:160:68: note: in expansion of macro 'MOD' printf("%lld\n", (ll)fact[count] * fastexp(div, MOD - 2) % MOD); ^ anagrame6.cpp:115:37: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("anagrame.in", "r", stdin); ^ anagrame6.cpp:116:39: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("anagrame.out", "w", stdout); ^ anagrame6.cpp:118:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d%d\n", &p, &n, &m); ^ anagrame6.cpp:137:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d\n", &a, &b); ^ anagrame6.cpp:164:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d\n", &pos); ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema anagrame6 face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.