[Archiv!] Reine Mathematik, Physik, Chemie usw.: Gehirntrainingsprobleme, die in keiner Weise mit dem Handel zusammenhängen - Seite 321
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Вариантов нет. Для 30 знаков нужно как-то эффективно ограничивать перебор.
Рекурсию, наверно, бесполезно (если число знаков больше 10).
Ja, ich stimme zu. Ich fing an zu schreiben und merkte sofort, dass long einfach überlaufen würde.
// Aber ich erwarte keine Probleme mit Stack bei 30 (oder sogar 300) Stellen.
Ich habe bereits einen iterativen Weg (in einer Schleife) gefunden, aber... die Bitgröße des Produkts ist ohnehin nicht ausreichend.
Ja, ich stimme zu. Ich fing an zu schreiben und verstand sofort, dass die Länge einfach überlaufen wird.
Und wir brauchen keine Rekursion, es könnte einfacher sein, ich habe bereits einen iterativen Weg (in einer Schleife) gefunden, aber... die Bittiefe pro Produkt ist sowieso nicht genug.
Long sollte in String geändert werden, so dumm das auch klingen mag.
Long нужно на String менять, как бы глупо это не звучало.
Das klingt nicht allzu dumm, nur die Multiplikation und die Addition müssen von Hand umgeschrieben werden.
Das ist in Ordnung, aber die Geschwindigkeit geht in den Sand, und bei 30-stelligen Zahlen dauert das Zählen sehr lange.
// Stimmt, auf mcl5 geht es immer noch ein oder zwei Nummern schneller als auf Wasik :-P
Jede Zahl ist ein Array oder eine Kette von Ziffern. Das Erhöhen einer Zahl ist eine manuelle Modellierungsaufgabe.
Es ist immer noch eine lange Zeit, der Collider wird schneller arbeiten :)
Es ist zum Beispiel klar, dass wir nur Mengen von Ziffern suchen müssen, und die Tatsache, dass diese Zahlen aneinandergereiht eine Zahl für das Problem bilden können, ist nicht wichtig.
Weitere - wenn die Summe der Zahlen eine Primzahl ist - wird übersprungen.
Und so weiter.
А при чем тут лонг? Тут же исключительно с цифирями работа. Ну да, понимаю, хоцца все в один цикл всунуть. Дык попробуй-ка 17-ю цифру слева у 30-разрядного числа быстро извлечь.
Long mit dem Produkt von 30 Zahlen, die den Durchschnitt von 5 ergeben == 5^30
~ == 9.31323E+20 (und der Long passt auf maximal 15 Nachkommastellen)
;)
Вожусь немножко с №226.
Вьехал, что точки лежат не только на окружностях с центром в точке == центру многоугольника,
но и на наборе окружностей "половинного" диаметра прижатых к краям 1976-угольника.
Это легко понять, если представить себе место середин точек всех хорд пересекающих окружность одним из своих концов в фиксированной точке.
Возможно на этих окружностях лежат ещё какие-то "полуточки". (с) Т.е. ответ будет возможно больше чем очевидный минимум (1976).
Думаю дальше.
// Кстати, 1976 == 2*2*2*13*19
// Не знаю поможет ли это делу. Но во внимание принимаю. :)
Diese Darstellung von 30 als Summe von drei Würfeln war bis vor kurzem nicht bekannt (dies ist die erste Lösung, die für die Zahl 30 gefunden wurde; die Darstellung von 30 durch drei Würfel war lange eine Hypothese). Natürlich auf einem Computer gefunden. Die Reihenfolge der Zahlen (die bereits gewürfelt sind) beträgt nur etwa 30 Ziffern.
Es ist unwahrscheinlich, dass dies mit brachialer Gewalt geschehen ist.
Вот сама программка:
-
'Объява
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
Das gibt's doch nicht...
Und so sieht ein Perl-Algorithmus aus:
for(111..999){
split(//,$_);
my($sum,$mul)=(0,1);
for(@_){$sum+=$_;$mul*=$_;}
print("$_\n") if($sum*12==$mul);
}
Ни фига себе..
А вот как выглядит алгоритм на perl:
.....
Er ist nur ein Programmierer.... Soso.
Ich kann das in vier oder fünf Zeilen in Wasik erledigen.
:)