3484 - 3 La N: Difference between revisions
Pagină nouă: <math>3^{3^{3^{numar1*numar2}}}</math>Sursă: [https://www.pbinfo.ro/probleme/362/sumcif1] ==Cerinţa== Se citește un număr natural '''numar'''. Să se determine suma cifrelor aflate pe poziții pare. Numărarea pozițiilor în numărul dat se face începând de la cifra unităților. ==Date de intrare== Programul citește de la tastatură numărul '''numar'''. ==Date de ieşire== Programul afișează pe ecran numărul '''suma''', reprezentând suma cerută. ==Restricții... |
No edit summary |
||
Line 1: | Line 1: | ||
Sursă: [https://www.pbinfo.ro/probleme/362/sumcif1] | |||
==Cerinţa== | == Cerinţa == | ||
Se | Se dau '''numar''' numere naturale distincte. Pentru oricare două numere date, distincte, '''numar1''' şi '''numar2''', se determină ultima cifră a numărului <math>3^{3^{3^{numar1*numar2}}}</math> şi se însumează cifrele obţinute. Aflaţi valoarea acestei sume. | ||
==Date de intrare== | ==Date de intrare== | ||
Fișierul de intrare '''3lan.in''' conține pe prima linie numărul '''numar''', iar pe a doua linie cele '''numar''' numere date, despărţite prin spaţii. | |||
==Date de ieşire== | ==Date de ieşire== | ||
Fișierul de ieșire '''3lan.out''' va conține pe prima linie suma cerută. | |||
==Restricții și precizări== | ==Restricții și precizări== | ||
*''' | * ''' 2 ⩽ numar ⩽ 1.000''' | ||
* cele '''numar''' numere date sunt cel mult egale cu '''10.000''' | |||
==Exemplu== | == Exemplu == | ||
; | ; 3lan.in | ||
: | : 2 | ||
; | : 9 0 | ||
: | ; 3lan.out | ||
: 7 | |||
==Rezolvare== | ==Rezolvare== | ||
Line 24: | Line 23: | ||
numar = int(input()) | numar = int(input()) | ||
a = list(map(int, input().split())) | |||
s = 0 | |||
def treilan(x, y): | |||
rest = (x * y) % 4 | |||
if rest == 0: | |||
nr1 = 1 | |||
elif rest == 1: | |||
nr1 = 3 | |||
elif rest == 2: | |||
nr1 = 9 | |||
else: | |||
nr1 = 7 | |||
nr1 %= 4 | |||
if nr1 == 0: | |||
nr2 = 1 | |||
elif nr1 == 1: | |||
nr2 = 3 | |||
elif nr1 == 2: | |||
nr2 = 9 | |||
else: | |||
nr2 = 7 | |||
nr2 %= 4 | |||
if nr2 == 0: | |||
return 1 | |||
elif nr2 == 1: | |||
return 3 | |||
elif nr2 == 2: | |||
return 9 | |||
else: | |||
return 7 | |||
for i in range(1, numar+1): | |||
for j in range(i+1, numar+1): | |||
s += treilan(i, j) | |||
print(s) | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 16:30, 12 March 2023
Sursă: [1]
Cerinţa
Se dau numar numere naturale distincte. Pentru oricare două numere date, distincte, numar1 şi numar2, se determină ultima cifră a numărului şi se însumează cifrele obţinute. Aflaţi valoarea acestei sume.
Date de intrare
Fișierul de intrare 3lan.in conține pe prima linie numărul numar, iar pe a doua linie cele numar numere date, despărţite prin spaţii.
Date de ieşire
Fișierul de ieșire 3lan.out va conține pe prima linie suma cerută.
Restricții și precizări
- 2 ⩽ numar ⩽ 1.000
- cele numar numere date sunt cel mult egale cu 10.000
Exemplu
- 3lan.in
- 2
- 9 0
- 3lan.out
- 7
Rezolvare
<syntaxhighlight lang="python" line="">
numar = int(input()) a = list(map(int, input().split())) s = 0
def treilan(x, y):
rest = (x * y) % 4 if rest == 0: nr1 = 1 elif rest == 1: nr1 = 3 elif rest == 2: nr1 = 9 else: nr1 = 7 nr1 %= 4 if nr1 == 0: nr2 = 1 elif nr1 == 1: nr2 = 3 elif nr1 == 2: nr2 = 9 else: nr2 = 7 nr2 %= 4 if nr2 == 0: return 1 elif nr2 == 1: return 3 elif nr2 == 2: return 9 else: return 7
for i in range(1, numar+1):
for j in range(i+1, numar+1): s += treilan(i, j)
print(s)
</syntaxhighlight>