Να βρεθεί αριθμός.

Συντονιστές: cretanman, silouan, rek2

Soniram89
Δημοσιεύσεις: 72
Εγγραφή: Δευ Απρ 09, 2018 8:48 pm

Να βρεθεί αριθμός.

#1

Μη αναγνωσμένη δημοσίευση από Soniram89 » Πέμ Σεπ 06, 2018 9:52 pm

Να βρεθεί θετικός αριθμός που όταν το πρώτο και το τελευταίο ψηφίο του αλλάξουν θέση, ο αριθμός διπλασιάζεται.

Δηλαδή αν έχουμε τον αριθμό AbcdE o ζητούμενος πρέπει να είναι της μορφής EbcdA
τελευταία επεξεργασία από Soniram89 σε Παρ Σεπ 07, 2018 11:49 am, έχει επεξεργασθεί 1 φορά συνολικά.



Λέξεις Κλειδιά:
Άβαταρ μέλους
Demetres
Γενικός Συντονιστής
Δημοσιεύσεις: 8989
Εγγραφή: Δευ Ιαν 19, 2009 5:16 pm
Τοποθεσία: Λεμεσός/Πύλα
Επικοινωνία:

Re: Να βρεθεί αριθμός.

#2

Μη αναγνωσμένη δημοσίευση από Demetres » Παρ Σεπ 07, 2018 10:53 am

Όχι δεν είναι στην σωστή ενότητα. Είναι καλύτερο για μαθηματικά διαγωνισμών.

Επίσης υπάρχει ένα θέμα με την εκφώνηση και την εξήγηση. Όπως είναι η εκφώνηση, ο abcde θα έπρεπε να γίνει eabcd. Για να γίνει ebcda η εκφώνηση θα έπρεπε να λέει «...αν το πρώτο και το τελευταίο ψηφίο του αλλάξουν θέση...»

Εγώ έλυσα αυτό που έλεγε η εκφώνηση διότι είδα αργότερα το παράδειγμα. Ένας τέτοιος αριθμός (δεν λέω ακόμη πως τον βρήκα) είναι ο \displaystyle  105263157894736842


Soniram89
Δημοσιεύσεις: 72
Εγγραφή: Δευ Απρ 09, 2018 8:48 pm

Re: Να βρεθεί αριθμός.

#3

Μη αναγνωσμένη δημοσίευση από Soniram89 » Παρ Σεπ 07, 2018 11:48 am

Demetres έγραψε:
Παρ Σεπ 07, 2018 10:53 am
Επίσης υπάρχει ένα θέμα με την εκφώνηση και την εξήγηση. Όπως είναι η εκφώνηση, ο abcde θα έπρεπε να γίνει eabcd. Για να γίνει ebcda η εκφώνηση θα έπρεπε να λέει «...αν το πρώτο και το τελευταίο ψηφίο του αλλάξουν θέση...»
Έχετε δίκιο, θα το αλλάξω για να γίνει ξεκάθαρο.


Energy Engineer
Δημοσιεύσεις: 101
Εγγραφή: Κυρ Μάιος 02, 2010 9:05 pm
Τοποθεσία: Γερμανία

Re: Να βρεθεί αριθμός.

#4

Μη αναγνωσμένη δημοσίευση από Energy Engineer » Παρ Σεπ 07, 2018 12:15 pm

 2 * 105263157894736842 = 210526315789473696

δεν ισχυει

σόρρυ, λάθος μου.


Energy Engineer
Δημοσιεύσεις: 101
Εγγραφή: Κυρ Μάιος 02, 2010 9:05 pm
Τοποθεσία: Γερμανία

Re: Να βρεθεί αριθμός.

#5

Μη αναγνωσμένη δημοσίευση από Energy Engineer » Παρ Σεπ 07, 2018 1:02 pm

Έφτιαξα την εξής συνάρτηση matlab:
function[] = mathematicagr1 (n,m,z)

counter1 = 0;

for i=n:1:m

j=str2double(regexp(num2str(i),'\d','match'));

a = j(1);
j(1) = j(end);
j(end) = a;
b = 0;
c = size(j);

for x= 1:c(2)
b = b + j(x) * (10^(c(2)-x));
end

if b == z*i
counter1 = counter1+1;
fma(counter1,1) = i;
fma(counter1,2) = b;
end

if counter1 > 0
fma
end

end
n είναι ο αριθμός που θέλω να ξεκινήσω να ψάχνω, m είναι ο τελευταίος αριθμός που θέλω να ψάξω και z είναι ο παράγοντας, στην περίπτωσή μας 2.

Μεχρι στιγμής έχω εξετάσει τους αριθμούς από 1 έως 200.000 και έχω εξετάσει αν eabcd = z * abcde, όπου z είναι φυσικός από 2 έως 20.

Αποτέλεσμα; Κανένας αριθμός μέχρι στιγμής. Μέσα στις επόμενες ώρες θα έχω εξετάσει μέχρι το 10.000.000

O αλγόριθμός μου είναι  O(n^2) , αλλά πιστεύω υπάρχει αλγόριθμος  O(n*logn) ή  O(logn)
τελευταία επεξεργασία από Energy Engineer σε Παρ Σεπ 07, 2018 1:11 pm, έχει επεξεργασθεί 2 φορές συνολικά.


Soniram89
Δημοσιεύσεις: 72
Εγγραφή: Δευ Απρ 09, 2018 8:48 pm

Re: Να βρεθεί αριθμός.

#6

Μη αναγνωσμένη δημοσίευση από Soniram89 » Παρ Σεπ 07, 2018 1:09 pm

Energy Engineer έγραψε:
Παρ Σεπ 07, 2018 1:02 pm

Μεχρι στιγμής έχω εξετάσει τους αριθμούς από 1 έως 200.000 και έχω εξετάσει αν eabcd = z * abcde, όπου z είναι φυσικός από 2 έως 20.
Νομίζω θα έπρεπε να ήταν eabcd=z*dabce


Energy Engineer
Δημοσιεύσεις: 101
Εγγραφή: Κυρ Μάιος 02, 2010 9:05 pm
Τοποθεσία: Γερμανία

Re: Να βρεθεί αριθμός.

#7

Μη αναγνωσμένη δημοσίευση από Energy Engineer » Παρ Σεπ 07, 2018 1:16 pm

Έχουμε τον αριθμό abcde και αφού αλλάξουμε τα ψηφία, γίνεται eabcd

Τι πρέπει να ισχύει;

abcde = z * eabcd ή eabcd = z * abcde

Δεδομένου ότι το πλήθος των ψηφίων δεν αλλάζει περιόρισα τους παράγοντες από 2 έως 9.


Soniram89
Δημοσιεύσεις: 72
Εγγραφή: Δευ Απρ 09, 2018 8:48 pm

Re: Να βρεθεί αριθμός.

#8

Μη αναγνωσμένη δημοσίευση από Soniram89 » Παρ Σεπ 07, 2018 1:26 pm

Energy Engineer έγραψε:
Παρ Σεπ 07, 2018 1:16 pm
Έχουμε τον αριθμό abcde και αφού αλλάξουμε τα ψηφία, γίνεται eabcd

Τι πρέπει να ισχύει;

abcde = z * eabcd ή eabcd = z * abcde

Δεδομένου ότι το πλήθος των ψηφίων δεν αλλάζει περιόρισα τους παράγοντες από 2 έως 9.
Αφήστε το παιδιά, δυστυχώς το πρόβλημα μου μεταφέρθηκε κακώς διατυπωμένο, η σωστή απάντηση είναι αυτή του Demetres.

Τελική διατύπωση:Να βρειθει θετικός αριθμός που όταν το τελευταίο του ψηφίο γίνει πρώτο, τότε διπλασιάζεται!!!Δηλαδή αν έχουμε αριθμό abcde γίνεται eabcd


Soniram89
Δημοσιεύσεις: 72
Εγγραφή: Δευ Απρ 09, 2018 8:48 pm

Re: Να βρεθεί αριθμός.

#9

Μη αναγνωσμένη δημοσίευση από Soniram89 » Παρ Σεπ 07, 2018 1:27 pm

Demetres έγραψε:
Παρ Σεπ 07, 2018 10:53 am
Εγώ έλυσα αυτό που έλεγε η εκφώνηση διότι είδα αργότερα το παράδειγμα. Ένας τέτοιος αριθμός (δεν λέω ακόμη πως τον βρήκα) είναι ο \displaystyle  105263157894736842
Μια χαρά το βρήκατε, έχετε κάποια αλγεβρική λύση?


Energy Engineer
Δημοσιεύσεις: 101
Εγγραφή: Κυρ Μάιος 02, 2010 9:05 pm
Τοποθεσία: Γερμανία

Re: Να βρεθεί αριθμός.

#10

Μη αναγνωσμένη δημοσίευση από Energy Engineer » Παρ Σεπ 07, 2018 1:45 pm

Οκ, αυτό που λες στα αγγλικά λέγεται shift circularly.

https://www.mathworks.com/help/matlab/r ... shift.html

Εδώ είναι το βελτιωμένο Matlab. Του έβαλα μια συνθήκη ώστε να μην χάνει χρόνο. Ας πούμε για το 8 εξετάζει μέχρι το 124, δηλαδή εξετάζει αν ισχύει 412 = 8 * 124. Το 125, λόγω του ότι τα ψηφία του 8 * 125 γίνονται 4 δεν το εξετάζει και σταματάει εκεί για το 8.
function[] = mathematicagr1 (n,m,z)

counter1 = 0;

for i=n:1:m
if (numel(num2str(i*z)) == numel(num2str(i)))
ja=str2double(regexp(num2str(i),'\d','match'));

j = circshift(ja,1);
c = size(j);
b = 0;

for x= 1:c(2)
b = b + j(x) * (10^(c(2)-x));
end

if b == z*i
counter1 = counter1+1;
fma(counter1,1) = i;
fma(counter1,2) = b;
end

if counter1 > 0
fma
end
end

end
τελευταία επεξεργασία από Energy Engineer σε Παρ Σεπ 07, 2018 3:38 pm, έχει επεξεργασθεί 1 φορά συνολικά.


Soniram89
Δημοσιεύσεις: 72
Εγγραφή: Δευ Απρ 09, 2018 8:48 pm

Re: Να βρεθεί αριθμός.

#11

Μη αναγνωσμένη δημοσίευση από Soniram89 » Παρ Σεπ 07, 2018 2:23 pm

Engineer πολυ ενδιαφερον, ευχαριστω!!


Energy Engineer
Δημοσιεύσεις: 101
Εγγραφή: Κυρ Μάιος 02, 2010 9:05 pm
Τοποθεσία: Γερμανία

Re: Να βρεθεί αριθμός.

#12

Μη αναγνωσμένη δημοσίευση από Energy Engineer » Παρ Σεπ 07, 2018 3:54 pm

Αυτός είναι ο βελτιστοποιημένος μέχρι στιγμής κώδικας:
function[] = mathematicagr1 (n,m,z)

counter1 = 0;

for i=n:1:m
if (numel(num2str(i*z)) == numel(num2str(i)))
ja=str2double(regexp(num2str(i),'\d','match'));

j = circshift(ja,1);
c = size(j);
b = 0;

for x= 1:c(2)
b = b + j(x) * (10^(c(2)-x));
end

if b == z*i
counter1 = counter1+1;
fma(counter1,1) = i;
fma(counter1,2) = b;
fma(counter1,3) = z;
end

end


end

if counter1 > 0
fma
end

clear fma
Ετρεξα την παρακάτω εντολή, για να ελέγξει μεταξύ 100.000 και 1.000.000:
for i = 2:9
i
mathematicagr1(100000,1000000,i)
end
Τα αποτελέσματα:

102564 410256 4
128205 512820 4
153846 615384 4
179487 717948 4
205128 820512 4
230769 923076 4
142857 714285 5

Στην πρώτη στήλη είναι ο αριθμός, στην δεύτερη στήλη είναι η αλλαγή που έγινε μετά από shift circularly και η τελευταία στήλη είναι ο παράγοντας.

Θα το βάλω τώρα να τρέξει 1.000.000 - 10.000.000, μήπως εντοπίσει κάποιον του 2.

ΥΓ: Σαν εταιρεία έχουμε νοικιάσει έναν υπερυπολογιστή σέρβερ στην Αμαζον, αλλά δεν μπορώ να τον χρησιμοποιήσω, γιατί εκπαιδεύουμε ένα νευρωνικό δίκτυο αυτήν την εποχή.


sokpanvas
Δημοσιεύσεις: 45
Εγγραφή: Δευ Ιούλ 31, 2017 1:53 pm

Re: Να βρεθεί αριθμός.

#13

Μη αναγνωσμένη δημοσίευση από sokpanvas » Παρ Σεπ 07, 2018 4:41 pm

Soniram89 έγραψε:
Παρ Σεπ 07, 2018 2:23 pm
Engineer πολυ ενδιαφερον, ευχαριστω!!
Αλγεβρική λύση:
2*(10^na_n+10^{n-1}a_{n-1}+...+a_0)=10^na_0 + 10^{n-1}a_n+...+a_1
,2*10^n-10^{n-1}=19*10^{n-1} οπότε η εξίσωση γράφεται
(10^n-2)a_0=19(10^{n-1}a_n +10^{n-2}a_{n-1}+...+a_1) πρέπει το 10^n-2 να ειναι πολλαπλάσιο του 19
Έχουμε οτι 10^{18}\equiv 1( mod19) (1) και 20\equiv 1 (mod19) άρα 10^{17}\equiv 2 (mod19) (2) από (1),(2) 10^{18m+17}\equiv 2 (mod19) άρα n=18m+17 με m φυσικός. Για να βρούμε τους αριθμούς επιλέγουμε το m και το a_0.


Soniram89
Δημοσιεύσεις: 72
Εγγραφή: Δευ Απρ 09, 2018 8:48 pm

Re: Να βρεθεί αριθμός.

#14

Μη αναγνωσμένη δημοσίευση από Soniram89 » Παρ Σεπ 07, 2018 9:25 pm

sokpanvas έγραψε:
Παρ Σεπ 07, 2018 4:41 pm
Soniram89 έγραψε:
Παρ Σεπ 07, 2018 2:23 pm
Engineer πολυ ενδιαφερον, ευχαριστω!!
Αλγεβρική λύση:
2*(10^na_n+10^{n-1}a_{n-1}+...+a_0)=10^na_0 + 10^{n-1}a_n+...+a_1
,2*10^n-10^{n-1}=19*10^{n-1} οπότε η εξίσωση γράφεται
(10^n-2)a_0=19(10^{n-1}a_n +10^{n-2}a_{n-1}+...+a_1) πρέπει το 10^n-2 να ειναι πολλαπλάσιο του 19
Έχουμε οτι 10^{18}\equiv 1( mod19) (1) και 20\equiv 1 (mod19) άρα 10^{17}\equiv 2 (mod19) (2) από (1),(2) 10^{18m+17}\equiv 2 (mod19) άρα n=18m+17 με m φυσικός. Για να βρούμε τους αριθμούς επιλέγουμε το m και το a_0.
προσπαθώ να καταλάβω τη λύση!!! Ευχαριστώ..


Άβαταρ μέλους
Demetres
Γενικός Συντονιστής
Δημοσιεύσεις: 8989
Εγγραφή: Δευ Ιαν 19, 2009 5:16 pm
Τοποθεσία: Λεμεσός/Πύλα
Επικοινωνία:

Re: Να βρεθεί αριθμός.

#15

Μη αναγνωσμένη δημοσίευση από Demetres » Κυρ Σεπ 09, 2018 12:36 pm

Για την κατανόηση της λύσης χρειάζεται βεβαίως γνώση αριθμητικής modulo και του τελευταίου θεωρήματος του Fermat. Παρόμοια ήταν και η δική μου λύση. Χρειάζεται όμως λίγη επιπλέον προσοχή. Π.χ. για m=0 και a_0 = 1 προκύπτει a_n = 0 το οποίο πρέπει να απορριφθεί.

Έχω ακόμη μία λύση η οποία είναι αρκετά απλούστερη. Π.χ. θέλω το τελευταίο ψηφίο του αριθμού x να είναι το 5. Όταν τον διπλασιάσω, το τελευταίο ψηφίο θα είναι 0. Αυτό σημαίνει ότι ο x θα λήγει σε 05. Τότε ο 2x λήγει σε 10 οπότε ο x λήγει σε 105. Συνεχίζουμε με παρόμοιο τρόπο μέχρι να βρούμε κάποιο ψηφίο που να είναι 5 οπότε και μπορούμε να σταματήσουμε, αρκεί βέβαια να μην πρέπει να υπάρχει και άλλο ψηφίο μπροστά του. Δοκιμάστε το για να βρείτε ποιος αριθμός θα προκύψει.


sokpanvas
Δημοσιεύσεις: 45
Εγγραφή: Δευ Ιούλ 31, 2017 1:53 pm

Re: Να βρεθεί αριθμός.

#16

Μη αναγνωσμένη δημοσίευση από sokpanvas » Κυρ Σεπ 09, 2018 2:52 pm

Demetres έγραψε:
Κυρ Σεπ 09, 2018 12:36 pm
Για την κατανόηση της λύσης χρειάζεται βεβαίως γνώση αριθμητικής modulo και του τελευταίου θεωρήματος του Fermat.
Δεν είναι λίγο υπερβολική η γνώση του τελευταίου θεωρήματος του fermat? :lol:


Mihalis_Lambrou
Επιμελητής
Δημοσιεύσεις: 15764
Εγγραφή: Κυρ Δεκ 21, 2008 2:04 am

Re: Να βρεθεί αριθμός.

#17

Μη αναγνωσμένη δημοσίευση από Mihalis_Lambrou » Κυρ Σεπ 09, 2018 6:15 pm

Soniram89 έγραψε:
Παρ Σεπ 07, 2018 1:27 pm
Demetres έγραψε:
Παρ Σεπ 07, 2018 10:53 am
Εγώ έλυσα αυτό που έλεγε η εκφώνηση διότι είδα αργότερα το παράδειγμα. Ένας τέτοιος αριθμός (δεν λέω ακόμη πως τον βρήκα) είναι ο \displaystyle  105263157894736842
Μια χαρά το βρήκατε, έχετε κάποια αλγεβρική λύση?
Έχει αλλάξει τόσες φορές η εκφώνηση που έχω μπερδευτεί ποια ακριβώς είναι η ερώτηση. Αν είναι "Να βρεθεί θετικός αριθμός που όταν το τελευταίο του ψηφίο γίνει πρώτο, τότε διπλασιάζεται", τότε οι ζητούμενοι αριθμοί είναι οι

\displaystyle{\frac {c}{19}(10^{18n}-1), \, \, c=2,3,...\,,9}

Γιατί;

Είναι ουσιαστικά γραμμένο από τους Δημήτρη και sokpanvas. Ειδικά, η περίπτωση n=1,\, c=2 δίνει τον παραπάνω \displaystyle  105263157894736842 (είναι ο μικρότερος).


Απάντηση

Επιστροφή σε “Θεωρία Αριθμών - Προχωρημένο Επίπεδο (Juniors)”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 3 επισκέπτες