-
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.PO
STED!not-for-mail
From: bartekltg <b...@o...pl>
Newsgroups: pl.comp.programming
Subject: Re: porownanie wyniku mnozenia integerow
Date: Wed, 25 May 2011 20:39:56 +0200
Organization: http://onet.pl
Lines: 74
Message-ID: <irjids$tj3$1@news.onet.pl>
References: <irgtcb$np6$1@inews.gazeta.pl>
NNTP-Posting-Host: 144-mi3-6.acn.waw.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: news.onet.pl 1306348796 30307 85.222.69.144 (25 May 2011 18:39:56 GMT)
X-Complaints-To: n...@o...pl
NNTP-Posting-Date: Wed, 25 May 2011 18:39:56 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.17) Gecko/20110414
Thunderbird/3.1.10
In-Reply-To: <irgtcb$np6$1@inews.gazeta.pl>
Xref: news-archive.icm.edu.pl pl.comp.programming:190694
[ ukryj nagłówki ]W dniu 2011-05-24 20:28, t...@g...SKASUJ-TO.pl pisze:
> witam,
>
> jak sprawdzic czy dla integerow a,b,c,d zachodzi
>
> a*b == c*d
Jak a i b są 32 bitowe, to piszemy ((long long)a)*b i porównujemy.
Jak 64, a maszyna x64, to VS i gcc mają jakieś typy 128bitowe
i podobnie. W strasznym języku ja J mamy duże liczby;)
> Chodzi raczej o to, czy ktos zna zestaw warunkow
> typu mnozenie, dodawanie
> modulo,
Ok, a jak podam rozwiązanie, to co dostane?
Masz porównać ab == cd
porównaj ab == cd (mod p_i)
dla kilku liczb pierwszych, w miarę dużych i takich,
by p^2 mieściło się w zakresie.
Z górką wystarczy 5 takich liczb*)
Jeśli m==n (mod p_i), dla i=1..k
to m==n jeżeli tylko m i n < p_1*p_2*...*p_k
Nazywa się toto Chińskie twierdzenie o resztach.
p_i nie muszą być nawet pierwsze, wystarczy, że są względnie pierwsze.
*)P< sqrt(MAXINT), ale możemy dobrać niewiele mniejsze.
p_1*..*p^5 wyniesie ponad MAXINT^2
Mnożenia a*b wykonujesz mod p: ((a%p)*(b%p))%p
więc nigdy nie wyskoczysz poza zakres.
Wydaje się, że więcej pracy niż przy ((long long)a)*b==((long long)c)*d,
ale za to ładnie skaluje się, liniowo ze względu na ilość czynników
w iloczynie (czego nie można powiedzieć o mnożeniu dużych liczb).
No i jest niezależne od języka, maszynerii i tego, czym tak naprawdę
są te inty.
Ktoś podesłał pomysł rozkładu na czynniki pierwsze. Można pociągnąć
ten pomysł. Policzymy NWD (najwiekszy wspolny dzielnik)
dla wszytkich możliwytch par i będziemy skracać.
x=NWD(a,c);
a=a/x; c=c/x;
i podobnie dla par a:d, b:c, b:d (najpierw skracamy, pozniej
liczymy kolejne NWD)
Po wszystkich skróceniach, jeśli iloczyny były równe, otrzymamy
cztery jedynki.
Algorytm liczący NWD znajdziesz bez problemu, jest prosty i szybki,
a imię jego Euklides.
Chyba trudniej byłoby ze stwierdzeniem, która liczba jest większa.
pozdrawiam
bartekltg
Następne wpisy z tego wątku
- 26.05.11 06:40 Paweł Kierski
- 26.05.11 12:21 Wojciech \"Spook\" Sura
- 26.05.11 13:07 bartekltg
- 26.05.11 21:14 Jędrzej Dudkiewicz
- 03.06.11 14:17 Pawel WQLQS
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-06-05 [ot] spec od renowacji/reperacji kurtek skorzanych
- 2024-06-05 Koszt przywrócenia wychodnego numerowi w Plusie
- 2024-06-06 korki prawie takie same
- 2024-06-05 Takie elektryki mają sens ale czy z Francuską MARŻĄ?
- 2024-06-05 Warta S.A. - przyjęta odpowiedzialność?
- 2024-06-04 nie zna życia ten
- 2024-06-06 A jednak nie kondensatory
- 2024-06-06 Re: A jednak nie kondensatory
- 2024-06-06 Wymiana SIM Aero2
- 2024-06-06 Gdańsk => Programista Full Stack .Net <=
- 2024-06-06 Warszawa => Senior React Native Developer <=
- 2024-06-06 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-06-06 Warszawa => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-06-05 Olsztyn => Sales Specialist <=
- 2024-06-05 Ulm => Integration & Test Engineer <=