0861 - Dublare: Difference between revisions
Cristina94 (talk | contribs) Pagină nouă: ==Cerința== Fie un șir de caractere. Prin dublarea șirului înțelege oglindirea sa și concatenarea oglinditului la șirul inițial. De exemplu, prin dublarea șirului arc se obține șirul arccra. Orice șir de caractere se poate obține prin dublarea de un număr de ori (eventual de zero ori) a unui șir de caractere. Se dă un șir de caractere s. Să se determine numărul maxim de operații de dublare care pot fi aplicate succesiv pentru a obține șirul s. ==Date d... |
Cristina94 (talk | contribs) mNo edit summary |
||
Line 24: | Line 24: | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
#861 Dublare | #861 Dublare | ||
def numar_maxim_dublari(s): | def numar_maxim_dublari(s): | ||
Line 35: | Line 35: | ||
return lungime_s // lungime | return lungime_s // lungime | ||
return 1 | return 1 | ||
def validate_input(s): | |||
s | if not s: | ||
return False, "Sirul de caractere nu poate fi gol." | |||
return True, None | |||
rezultat = numar_maxim_dublari(s) | |||
print("Numarul maxim de operatii de dublare este:", rezultat) | def main(): | ||
s = input("Introduceti sirul de caractere: ") | |||
is_valid, error_message = validate_input(s) | |||
if not is_valid: | |||
print("Date de intrare invalide:", error_message) | |||
return | |||
rezultat = numar_maxim_dublari(s) | |||
print("Numarul maxim de operatii de dublare este:", rezultat) | |||
if __name__ == "__main__": | |||
main() | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 17:23, 5 February 2024
Cerința
Fie un șir de caractere. Prin dublarea șirului înțelege oglindirea sa și concatenarea oglinditului la șirul inițial. De exemplu, prin dublarea șirului arc se obține șirul arccra. Orice șir de caractere se poate obține prin dublarea de un număr de ori (eventual de zero ori) a unui șir de caractere.
Se dă un șir de caractere s. Să se determine numărul maxim de operații de dublare care pot fi aplicate succesiv pentru a obține șirul s.
Date de intrare
Programul citește de la tastatură șirul s, format din litere mici ale alfabetului englez.
Date de ieșire
Programul va afișa pe ecran numărul M, reprezentând numărul maxim de operații de dublare prin care se poate obține s.
Restricții și precizări:
- șirul s va avea cel mult 255 caractere
Exemplu 1
- Intrare
- abba
- Iesire
- Numarul maxim de operatii de dublare este: 1
Explicație
Sirul initial este ab. Dupa o dublare devine abba.
Rezolvare
<syntaxhighlight lang="python" line="1">
- 861 Dublare
def numar_maxim_dublari(s):
lungime_s = len(s) for lungime in range(1, lungime_s + 1): substr = s[:lungime] if s == substr * (lungime_s // lungime): return lungime_s // lungime
return 1
def validate_input(s):
if not s: return False, "Sirul de caractere nu poate fi gol."
return True, None
def main():
s = input("Introduceti sirul de caractere: ")
is_valid, error_message = validate_input(s)
if not is_valid: print("Date de intrare invalide:", error_message) return
rezultat = numar_maxim_dublari(s) print("Numarul maxim de operatii de dublare este:", rezultat)
if __name__ == "__main__":
main()
</syntaxhighlight>