Vanilla_Fury

zakaz 08_12_2020

Dec 8th, 2020
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. program zakaz_08_12_2020;
  2.  
  3. uses
  4. System.SysUtils, Math;
  5.  
  6. var
  7. NumberReverse, OneOrZero, i, j, QuantityOfNumbers: Integer;
  8. NumberInBinary, NumberInBinaryReverse, NumberTemp, K: Int64;
  9. IsPalindrome2, IsPalindrome10: Boolean;
  10.  
  11. begin
  12. for i := 1 to 1000000 do
  13. begin
  14.  
  15. // Перевод в двоичную систему
  16. NumberTemp := i;
  17. K := 1;
  18. NumberInBinary := 0;
  19. while (NumberTemp <> 0) do
  20. begin
  21. OneOrZero := NumberTemp mod 2;
  22. NumberInBinary := NumberInBinary + K * OneOrZero;
  23. K := K * 10;
  24. NumberTemp := NumberTemp div 2;
  25. end;
  26.  
  27.  
  28. // Подсчёт количества цифр в 10 СС
  29. NumberTemp := i;
  30. QuantityOfNumbers := 0;
  31. while NumberTemp > 0 do
  32. begin
  33. NumberTemp := NumberTemp div 10;
  34. Inc(QuantityOfNumbers);
  35. end;
  36.  
  37.  
  38. // Проверка на полиндромность в 10-ичном коде
  39. NumberTemp := i;
  40. NumberReverse := 0;
  41.  
  42. K := 1;
  43. for j := 2 to QuantityOfNumbers do
  44. K := K * 10;
  45.  
  46. for j := 1 to QuantityOfNumbers do
  47. begin
  48. NumberReverse := NumberReverse + (NumberTemp mod 10) * K;
  49. NumberTemp := NumberTemp div 10;
  50. K := K div 10;
  51. end;
  52.  
  53. if (i = NumberReverse) then
  54. IsPalindrome10 := true
  55. else
  56. IsPalindrome10 := false;
  57.  
  58. if IsPalindrome10 then
  59. begin
  60. // Подсчёт количества цифр в 2 СС
  61. NumberTemp := NumberInBinary;
  62. QuantityOfNumbers := 0;
  63. while NumberTemp > 0 do
  64. begin
  65. NumberTemp := NumberTemp div 10;
  66. Inc(QuantityOfNumbers);
  67. end;
  68.  
  69. // Проверка на полиндромность в 2-ичном коде
  70. NumberTemp := NumberInBinary;
  71. NumberInBinaryReverse := 0;
  72.  
  73. K := 1;
  74. for j := 2 to QuantityOfNumbers do
  75. K := K * 10;
  76.  
  77. for j := 1 to QuantityOfNumbers do
  78. begin
  79. NumberInBinaryReverse := NumberInBinaryReverse + (NumberTemp mod 10) * K;
  80. NumberTemp := NumberTemp div 10;
  81. K := K div 10;
  82. end;
  83.  
  84. if (NumberInBinary = NumberInBinaryReverse) then
  85. IsPalindrome2 := true
  86. else
  87. IsPalindrome2 := false;
  88.  
  89. if (IsPalindrome2 and IsPalindrome10) then
  90. writeln(i);
  91. end;
  92. end;
  93. writeln('End.');
  94. readln;
  95. end.
  96.  
Advertisement
Add Comment
Please, Sign In to add comment