QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 512 MB Total points: 100 Hackable ✓

#9362. Faltung

Statistics

Definieren wir eine Operation auf einer Zeichenkette, die wir Faltung nennen. Eine Faltung besteht aus mehreren (möglicherweise null) Knicken. Jeder Knick liegt zwischen zwei aufeinanderfolgenden Buchstaben und legt den zweiten Teil der Zeichenkette (den vom Anfang der Zeichenkette weiter entfernten) über den ersten Teil (den dem Anfang der Zeichenkette näheren), wobei er in entgegengesetzter Richtung verläuft und an der Position des Knicks ausgerichtet ist. Durch diese Operation wird eine Zeichenkette in eine Struktur umgewandelt, die eine Ebene mehr hat, als Knicke ausgeführt wurden.

Nach der Faltung kann man die Zeichenkette als mehrere Stapel von Buchstaben betrachten. Wir nennen die Faltung gültig, wenn alle Buchstaben im selben Stapel gleich sind.

Die zugehörige Menge einer Faltung ist die Menge der Positionen der Buchstaben in der ursprünglichen Zeichenkette unmittelbar vor den Knickstellen. Zum Beispiel ist die zugehörige Menge einer Faltung mit einem einzigen Knick zwischen dem zweiten und dritten Buchstaben $\{2\}$, und die zugehörige Menge einer Faltung ohne Knicke ist die leere Menge. Zwei Faltungen werden genau dann als gleich betrachtet, wenn ihre zugehörigen Mengen gleich sind.

Eine Menge $S$ ist arithmetisch, wenn ganze Zahlen $a$ und $b$ ($0\le b<a$) so gewählt werden können, dass $x\in S\iff 1\le x<n,\ x\equiv b\pmod a$, wobei $n$ die Länge der Zeichenkette ist. Wenn $n$ zum Beispiel gleich $10$ ist, werden die Mengen $\varnothing$, $\{2\}$, $\{1,9\}$, $\{2,4,6,8\}$ als arithmetisch betrachtet, die Mengen $\{1,2,4\}$, $\{1,5\}$, $\{7,8,9\}$ hingegen nicht.

Eine Faltung ist großartig, wenn sie gültig und ihre zugehörige Menge arithmetisch ist. Sieh dir zur Veranschaulichung die Bilder auf der nächsten Seite an.

Gegeben ist eine Zeichenkette. Zähle die Anzahl der großartigen Faltungen der gegebenen Zeichenkette.

Eingabe

Die einzige Zeile enthält eine Zeichenkette aus lateinischen Buchstaben, Ziffern, Unterstrichen oder Bindestrichen der Länge $n$ ($1\le n\le 10^6$).

Ausgabe

Gib eine einzelne ganze Zahl aus — die Anzahl der großartigen Faltungen der gegebenen Zeichenkette.

Beispiele

Eingabe 1

aaaaa

Ausgabe 1

9

Eingabe 2

V-oo-V

Ausgabe 2

2

Eingabe 3

gritukan

Ausgabe 3

1

Eingabe 4

Lhic

Ausgabe 4

1

Eingabe 5

OO0OOO00O0OOOO0O00OOO0OO

Ausgabe 5

6

Eingabe 6

SpyCheessee

Ausgabe 6

3

Eingabe 7

Aa

Ausgabe 7

1

Eingabe 8

228322

Ausgabe 8

4

Eingabe 9

______________________________________

Ausgabe 9

380

Hinweis

Im ersten Beispiel sind die zugehörigen Mengen der großartigen Faltungen: $\varnothing$, $\{1\}$, $\{2\}$, $\{3\}$, $\{4\}$, $\{1,3\}$, $\{1,4\}$, $\{2,4\}$, $\{1,2,3,4\}$.

problem_9362_136f0393af7015153ea3371e2207f7f1.png

Dies ist eine großartige Faltung der Zeichenkette „aabccbaa“. Die zugehörige Menge ist $\{1,4,7\}$.

problem_9362_e7a6d14ce1947056e2884fff2b75fbb7.png

Dies ist eine großartige Faltung der Zeichenkette „abc“. Die zugehörige Menge ist $\varnothing$.

problem_9362_c1aa1f48b22a495212ade9ff7ddad6ae.png

Dies ist keine gültige Faltung, aber es ist eine Faltung und ihre zugehörige Menge ist arithmetisch. Die zugehörige Menge ist $\{2,6,10\}$.

problem_9362_0dbce8b98bf0177fc8b9a440bdfafbf7.png

Dies ist keine Faltung, weil der obere Teil in derselben Richtung verläuft wie der untere.

problem_9362_750cc614210f2812a00d88870a7da9e3.png

Dies ist keine Faltung, weil der obere Teil entweder in derselben Richtung verläuft (wenn wir ihn als nach rechts verlaufend betrachten) oder nicht ausgerichtet ist (wenn wir ihn als nach links verlaufend betrachten).

problem_9362_cef6f5fbfe67fdb0fe71cbd0cc1d7dce.png

Dies ist eine gültige Faltung, aber ihre zugehörige Menge ist nicht arithmetisch. Die zugehörige Menge ist $\{4,6\}$.

Und so setzt man mit TeX.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.