Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

помогите решить задачу в универ :(
sinetДата: Воскресенье, 17.02.2008, 20:00 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 6
Репутация: 0
Замечания: 0%
Статус: Offline
Дано натуральное число n. Среди чисел 1,2.. n найтивсе такие, запись которых совпадает с последними цифрами записи их квадрата ( например 6 в квадрате = 36 или 25 в квадрате = 625) Заранее спасибо:)
 
SeqularДата: Вторник, 19.02.2008, 21:24 | Сообщение # 2
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
В общем обрати внимание, что число должно совпадать с последними цифрами своего квадрата... Такая тема наблюдается тока для чисел, заканчивающихся на 0, 1, 5, 6.
Значит перебирать можно тока числа, оканчивающиеся на эти...

Цикл от 1 до Н (счетчик К)
Если К not in [0,1,5,6] то Continue;
X := K * K;
Переводишь K и X в строки (см процедуру Str)
Сравниваешь строку X со строкой K с конца.
Если равно, то вывод на экран.
Конец цикла

Примерно такой алгоритм.. Все понятно?


Поддерживаю также проект сообщество молодых сисадминов
 
sinetДата: Четверг, 21.02.2008, 06:33 | Сообщение # 3
Новичок
Группа: Пользователи
Сообщений: 6
Репутация: 0
Замечания: 0%
Статус: Offline
о, спасибо большое...

Добавлено (20.02.2008, 23:33)
---------------------------------------------
извините за наглость, а не можете написать весь текст проги, чтоб её сразу можно было в паскаль засунуть.... а то у меня что то не сильно идет... заранее спасибо

 
etcДата: Вторник, 18.03.2008, 23:28 | Сообщение # 4
Новичок
Группа: Пользователи
Сообщений: 9
Репутация: 1
Замечания: 0%
Статус: Offline
Замечание к циклу: при К>=10 проверка K not in [0,1,5,6] будет всегда возвращать false. Надо сравнивать К mod 10 с этим множеством.
Предлагаю следующий код (без преобразования в строчку, поэтому ограничение на кол-во знаков n более узкое):
program printnums;
var k:byte;
i,t,n,j,r:longint;
begin
writeln ('enter n'); readln (n);
for i:=1 to n do begin
if (i mod 10) in [0,1,5,6] then
begin
j:=i; k:=1; r:=1;
while (j div 10<>0) do begin j:=j div 10; inc(k); end;
for j:=1 to k do
r:=r*10;
t:=sqr(i) mod r;
if i=t then writeln (i);
end;
end;
end.
 
AlexanderДата: Среда, 19.03.2008, 05:02 | Сообщение # 5
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote
Такая тема наблюдается тока для чисел, заканчивающихся на 0, 1, 5, 6.

А нуль почему? Если мы умножаем два числа, заканчивающиеся n-нулями и не равные нулю, то в результате получим число, как минимум на n порядков большее, чем любое из них и оканчивающееся n*2 нулями.
Более того, единица тоже из другой оперы. Доказательство:
При умножении числа, которое заканчивается на единицу и не равно ей, самого на себя, мы получаем такую картину:

А по условию вторая с конца цифра результата должна быть равна соответствующей цифре исходного числа. Т.е. вторая цифра умноженная на 2, должна дать число, которое заканчивается на эту цифру! А теперь бежим к таблице умножения на 2 и убеждаемся, что это возможно только при умножении на нуль. В этом случае(x_1=0) аналогичное условие(2*x_n mod 10=x_n). Но при встрече первой значащей цифры(не нуль) мы увидим, что это условие не выполняется, а значащую цифру мы должны встретить по условию(число не равно единице) ч.т.д. biggrin
etc, Seqular был абсолютно прав, предлагая работать со строками, а ваш вариант и сложен и расточителен.


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Среда, 19.03.2008, 05:51
 
PavelДата: Четверг, 03.04.2008, 12:17 | Сообщение # 6
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Seqular писал образно. Так что, возможно надо было чуть подумать. А именно: проверять остаток от деления на 10 с множеством (1, 5, 6, 0). Так-то.
 
AlexanderДата: Пятница, 04.04.2008, 17:32 | Сообщение # 7
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote
проверять остаток от деления на 10 с множеством (1, 5, 6, 0)

не (1,5,6,0), а (5,6)!


Скажем дружно- нафиг нужно!
 
PavelДата: Пятница, 04.04.2008, 22:48 | Сообщение # 8
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote
Quote
проверять остаток от деления на 10 с множеством (1, 5, 6, 0)

не (1,5,6,0), а (5,6)!


а ну да. 11^2 = 121
Не подумал. Надо еще раз глянуть. Будет. Тут собсна на внимание. У нас как-то задачка была. На первый взгляд ужасно сложная с возможным перебором миллионов вариантов. А оказалось решение всего в одной строке после отсечения лишних вариантов.
 
SeqularДата: Воскресенье, 06.04.2008, 08:36 | Сообщение # 9
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
А я за то, чтобы брать 1-цу.. Ну или хотябы проверить, не является ли n единице... Потому что 1 * 1 = 1. =)

Поддерживаю также проект сообщество молодых сисадминов
 
AlexanderДата: Воскресенье, 06.04.2008, 09:05 | Сообщение # 10
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Seqular, вы не внимательно прочли, у меня это оговорено:
Quote
При умножении числа, которое заканчивается на единицу и не равного ей, самого на себя
.


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Воскресенье, 06.04.2008, 09:06
 
SeqularДата: Воскресенье, 06.04.2008, 20:32 | Сообщение # 11
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Alexander, О да... извиняюсь =) я вообще читал не пост целиком, а лишь его части =) собсна, я так со школы читаю... по паре букв из каждого слова... поэтому билеты по Автоделу частенько заваливаю... Гг. Фигасе, пролетел =)) конечно, идиницу фтопку

Поддерживаю также проект сообщество молодых сисадминов
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;