Twoim zadaniem jest obliczenie pierwiastka kwadratowego dodatniej liczby całkowitej bez użycia żadnych operatorów matematycznych do zmiany liczby, takich jak:
- Ustawianie zmiennej (np. SquareRoot = 5)
- Dodawanie (A + B)
- Odejmowanie (AB)
- Mnożenie (A * B)
- Division (A / B)
- Pierwiastki kwadratowe, sześcianowe, czwarte itd
- Wykładniki
Operatory porównania (takie jak <,>, == itp.) Nie są uważane za „operatory matematyczne” na potrzeby tego pytania i są dozwolone, o ile nie zmieniają wartości zmiennej.
Jedynym operatorem, którego możesz używać, jest ++. Obowiązują następujące wyjątki:
- Jeśli chcesz, możesz zainicjować zmienną, ustawiając ją na 0.
- Jeśli twój język nie zawiera składni ++, możesz użyć równoważnej składni, takiej jak foo + = 1 lub foo = foo + 1
- Pierwiastek kwadratowy należy obliczyć co najmniej 6 cyfr po przecinku (miejsce stu tysięcy) i wyprowadzić jako liczbę całkowitą po przecinku (np. Jeśli wprowadzę 2, może wynieść 14142135624 lub 1414213 w zależności od zaokrąglenia) . Zaokrąglanie w górę lub w dół nie jest ważne.
Funkcje zdefiniowane przez użytkownika są niedozwolone. Ponadto niedozwolone jest także symulowanie funkcji za pomocą goto.
Chcę zobaczyć, co wszyscy przesyłają! Miłego kodowania!
WYJAŚNIENIE
Wyjaśnij, że liczba jest dodatnią liczbą całkowitą. Możesz stworzyć kod, który będzie zawierał dowolną liczbę, ale nie jest to konieczne.
WYJAŚNIENIE # 2
Wyjaśnij, że operatory porównania są dozwolone.
WYJAŚNIENIE # 3
Dodawanie, odejmowanie, mnożenie, dzielenie, oraz funkcje do numerów zmian są niedozwolone w ogóle , niezależnie od tego, czy są one zapisywane do zmiennej lub nie. Przykro mi, że to unieważnia kilka istniejących odpowiedzi, ale chciałem zdefiniować tę grupę operatorów za pomocą „zmień numer”, aby zapobiec odpowiedziom troll (np. Właśnie użyłem funkcji sqrt (), zabroniłeś tylko dodawania, mnożenie, dzielenie i odejmowanie). Przepraszam za zamieszanie.
WYJAŚNIENIE # 4
Wyjaśnij, że potrzebujemy co najmniej 5 cyfr. 10 cyfr spowodowało, że kod działał przez długi czas.
while r*r<n*10e20:r+=1- dość trywialny. Możesz także rozważyć zmniejszenie wymaganej wydajności do około 10 ^ 8. Po pierwsze, ponieważ 10 ^ 10 jest większe niż 2 ^ 31, a po drugie, ponieważ zwiększenie tej wartości zajmuje trochę czasu.