Advertisement
cyberjab

Быстрое возведение в степень

Nov 2nd, 2023
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. //Быстрое возведение числа num в степень deg
  2. long powerFast(long num, long deg) {
  3. long result = 1;
  4. while(deg) {
  5. if (deg % 2 == 0) {
  6. deg /= 2;
  7. num *= num;
  8. }
  9. else {
  10. deg--;
  11. result *= num;
  12. }
  13. }
  14.  
  15. return result;
  16. }
  17.  
  18. //Быстрое возведение числа num в степень deg(в том числе может быть отрицательной)
  19. double powerFast(long num, long deg) {
  20. double result = 1;
  21. if(deg < 0) {
  22. deg = -deg;
  23.  
  24. while(deg) {
  25. if (deg % 2 == 0) {
  26. deg /= 2;
  27. num *= num;
  28. }
  29. else {
  30. deg--;
  31. result *= num;
  32. }
  33. }
  34.  
  35. return 1 / result;
  36. }
  37. else {
  38. while(deg) {
  39. if (deg % 2 == 0) {
  40. deg /= 2;
  41. num *= num;
  42. }
  43. else {
  44. deg--;
  45. result *= num;
  46. }
  47. }
  48.  
  49. return result;
  50. }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement