[Matematica pura, fisica, chimica, ecc.: problemi di allenamento del cervello non legati in alcun modo al commercio - pagina 321

Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Вариантов нет. Для 30 знаков нужно как-то эффективно ограничивать перебор.
Рекурсию, наверно, бесполезно (если число знаков больше 10).
Sì, sono d'accordo. Ho iniziato a scrivere e mi sono subito reso conto che il lungo sarebbe semplicemente traboccato.
// Ma non mi aspetto alcun problema con lo stack a 30 (o anche 300) cifre.
Ho già trovato un modo iterativo (in un ciclo), ma... la dimensione del bit del prodotto non è comunque sufficiente.
Sì, sono d'accordo. Ho iniziato a scrivere e ho capito subito che il lungo semplicemente trabocca.
E non abbiamo bisogno della ricorsione, potrebbe essere più semplice, ho già trovato il modo iterativo (in un ciclo), ma... la profondità di bit per prodotto non è comunque sufficiente.
Long dovrebbe essere cambiato in String, per quanto sciocco possa sembrare.
Long нужно на String менять, как бы глупо это не звучало.
Non sembra troppo stupido, solo la moltiplicazione e l'addizione dovranno essere riscritte a mano.
Va bene, ma la velocità andrà nella sabbia, e per i numeri a 30 cifre ci vorrà molto tempo per contare.
// Vero, è ancora un ordine o due più veloce su mcl5 che su Wasik :-P
Ogni numero è un array o una stringa di cifre. Aumentare un numero è un compito di modellazione manuale.
È un tempo lungo comunque, il collisore lavorerà più velocemente :)
Per esempio, è chiaro che dobbiamo cercare solo insiemi di cifre, e il fatto che questi numeri messi in fila possano formare qualche numero per il problema non è importante.
Inoltre - se la somma dei numeri è un numero primo - viene saltato.
E così via.
А при чем тут лонг? Тут же исключительно с цифирями работа. Ну да, понимаю, хоцца все в один цикл всунуть. Дык попробуй-ка 17-ю цифру слева у 30-разрядного числа быстро извлечь.
Lungo con il prodotto di 30 numeri in media 5 == 5^30
// ~ == 9.31323E+20 (e il lungo si adatta a un massimo di 15 cifre decimali)
;)
Вожусь немножко с №226.
Вьехал, что точки лежат не только на окружностях с центром в точке == центру многоугольника,
но и на наборе окружностей "половинного" диаметра прижатых к краям 1976-угольника.
Это легко понять, если представить себе место середин точек всех хорд пересекающих окружность одним из своих концов в фиксированной точке.
Возможно на этих окружностях лежат ещё какие-то "полуточки". (с) Т.е. ответ будет возможно больше чем очевидный минимум (1976).
Думаю дальше.
// Кстати, 1976 == 2*2*2*13*19
// Не знаю поможет ли это делу. Но во внимание принимаю. :)
Questa rappresentazione di 30 come somma di tre cubi non era conosciuta fino a poco tempo fa (questa è la prima soluzione trovata per il numero 30; la rappresentazione di 30 per tre cubi è stata a lungo un'ipotesi). Trovato, ovviamente, su un computer. L'ordine dei numeri (già cubi) è solo circa 30 cifre.
È improbabile che sia stato fatto con una stupida forza bruta.
Вот сама программка:
-
'Объява
Dim M As Long
Dim N As Long
Dim Koeficient As Long
Private Sub Command1_Click()
Dim MaxChislo As Long
Dim MinChislo As Long
Dim i As Long
Dim strok As String
'Задаём исходные данные
MinChislo = 1
MaxChislo = 100000
Koeficient = 128
For i = MinChislo To MaxChislo
strok = LTrim(RTrim(Str(i)))
If ProizCifr(strok) / SumCifr(strok) = Koeficient Then
Print strok
Else
'Print "Ни фига не найдено"
End If
Next i
End Sub
'РАСЧЁТ СУММЫ
Private Function SumCifr(Stroca As String) As Long
Dim i As Long
Dim Summa As Long
Dim Cifra As Long
For i = 1 To Len(Stroca)
Cifra = Val(Mid(Stroca, i, 1))
Summa = Summa + Cifra
Next i
SumCifr = Summa
End Function
'РАСЧЁТ ПРОИЗВЕДЕНИЯ
Private Function ProizCifr(Stroca As String) As Long
Dim i As Long
Dim Proiz As Long
Dim Cifra As Long
Proiz = 1
For i = 1 To Len(Stroca)
Cifra = Val(Mid(Stroca, i, 1))
Proiz = Proiz * Cifra
Next i
ProizCifr = Proiz
End Function
Niente da fare...
E questo è l'aspetto di un algoritmo perl:
for(111..999){
split(//,$_);
my($sum,$mul)=(0,1);
for(@_){$sum+=$_;$mul*=$_;}
print("$_\n") if($sum*12==$mul);
}
Ни фига себе..
А вот как выглядит алгоритм на perl:
.....
È solo un programmatore.... non così tanto.
Posso farlo in quattro o cinque righe in Wasik.
:)