Dans cette tâche, vous recevrez A (moins de 10000 chiffres) et B (moins de 2 ^ 64), et vous devrez calculer le dernier chiffre de (A · A · A · ... · A (B fois )).
Les entrées A et B sont données sur une seule ligne séparée par un blanc; les entrées sont terminées par EOF.
Contribution
34543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222345432323213232432424345445334453434324343111122234543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222345432323213232432424345445334453434324343111122234543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222 22337254775808
38758436543765743875437656358764347568437658743658743454354645645543532487548758475847684756897548758457843758437584758478574857438758436587436587436587643875643856783478743658743658764387564387564378658437658743658743687564387564387564765746576475647564756475465746574675647654765476547534587545689475689748574385743765874585743857843765893748643587438957458754376543265874387564384764367584375874758943267632487564357 54545454123
6777744348435743587643756438765436574587564354375674365645643675 23232
3875843654376574357 54545454
Production
6
3
5
9
Contraintes
- N'utilisez pas de fonction intégrée ou d'opérateurs surchargés pour calculer A B (vous n'avez pas vraiment besoin de calculer cela du tout).
- La solution la plus courte gagne!
Réponses:
J - 52 caractères
Réussit tous les tests donnés, mais uniquement si les espaces de fin sur la troisième entrée sont supprimés (je suppose que cela n'était pas intentionnel).
La solution fonctionnera en j602 en mode console (par exemple dans un terminal, emacs j-shell, etc.). Cela ne fonctionnera pas en j701 (non
wd
).Explication et mathématiques:
Le «nombre magique» 12 est le LCM des longueurs des tableaux «dernier chiffre» trouvés dans les autres réponses. Tous les chiffres se répètent avec les périodes 1, 2, 3 ou 4 donc ils répéteront également avec la période 12. Ajouter douze à cela corrige les cas où b mod 12 = 0. Ma solution calcule (dernier chiffre de A) ^ (12+ (mod B 12)), donnant un nombre avec le même dernier chiffre. (J'ai considéré une solution cassée sournoise éliminant les trois caractères '12 + 'en utilisant par exemple B mod 96 où aucun exemple n'était susceptible d'entrer en collision ...)
la source
Python
125107 CharsSolution O (1)
la source
GolfScript 21
Cela calcule essentiellement
A^C mod 10
où C est dans la plage[1,4]
etC mod 4 = B mod 4
, sauf si B est 0, alors C est également 0.Ce raccourci est possible car
A^(B+4) mod 10 = A^B mod 10
pour tout entier non négatif A et entier positif B.la source
J, 79
la source
Rubis,
97937271676160Gère également le cas où b == 0.
Je suppose que c'est en fait pire d'utiliser une table de recherche.
la source
2 5
en entrée et ne donne même pas de sortie correcte pour les cas d'échantillon ci-dessus. ideone.com/2cOPyWindows PowerShell, 85
O (1) solution. Inspiré de la solution Ruby de Lowjacker ;-)
la source
Python 149 caractères
la source
Python (
119134109)J'espère que l'interdiction des fonctions intégrées ne s'applique pas aux E / S.
Éditer: supprimer l'utilisation de l'opérateur d'exponentiation de Python.
Edit: opérateurs ternaires remplacés par des opérateurs booléens court-circuités.
la source
Python 3k
121 caractèresLe
(a*a)%10
n'est pas nécessaire mais il l'accélère, alors j'ai décidé de le garder.Edit: Apparemment, les parenthèses ne sont pas nécessaires.
Pendant ce temps, réfléchissons à la
O(1)
solution. :)la source
Javascript (
117847960 caractères)Atteint 60 caractères avec les améliorations suggérées de @JiminP et @NoOneIsHere. Je vous remercie!
d = fonction (s, n) {a = Math.pow (s [s.length-1], n% 4 == 0? 1: n% 4) + ''; renvoie a [a.length-1] }Tester:
Résultats:
la source
d=function(s,n){return(Math.pow(s.slice(-1),n%4||1)+'').slice(-1)}
: Pd=s,n=>(Math.pow(s.slice(-1),n%4||1)+'').slice(-1)
ou utiliser=>
du tout?