Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2012, 19:08   #1
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию Игры разума

Сходил на занятие по программированию которые ведет завед кафедрой Педагогического института. И он показал очень хороший сайт.
тыц
Обучаюсь с новичками, прошли только присваивание, но задачи мне очень понравились.
Например, помните как в том году голову ломали как без ветвлений и модуля вывести наибольшее число. Там и она есть


И так задача.
И снова вопрос : как бы Вы решили (топа там не существует (насколько я понял)) данную задачу?

Задача :
Дано четырехзначное число. Определите, является ли его десятичная запись симметричной. Если число симметричное, то выведите 1, иначе выведите любое другое целое число. Число может иметь меньше четырех знаков, тогда нужно считать, что его десятичная запись дополняется слева незначащими нулями.

При решении этой задачи нельзя пользоваться условной инструкцией if и циклами
Ссыль

Внимание
Там есть разбор(насколько я понял ко всем задачам), но я делаю только для себя => не пользовался им.

Своё решение пока выкладывать не буду (вдруг оно Вас не в ту степь толкнет).
Poma][a вне форума Ответить с цитированием
Старый 27.09.2012, 19:42   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
uses crt;
var
n,a,b,c,d,s:integer;
begin
readln(n);
a:=n div 1000;
b:=n mod 1000 div 100;
c:=n mod 100 div 10;
d:=n mod 10;
s:=(1 div (1+abs(a-d)))*(1 div (1+abs(b-c)));
write(s);
end.
Сделал ее еще в 2010 году, так что код просто скопировал.

Есть только список сделавших - http://informatics.mccme.ru/moodle/m...=2956&standing.
Раньше был ТОП-500 решивших больше всего задач, но его почему-то убрали.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.09.2012, 19:52   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
program Task2957;

var
   n : LongInt;

begin
     ReadLn (n);
     WriteLn (abs((n div 1000 - n mod 10)) + abs ((n div 100) mod 10 - (n mod 100) div 10) + 1);
end.
Abs - вот на нем то и погорел 1 раз. провалился на 7 тесте.

Для господ решивших пожалуйста :
Даны два натуральных числа n и m. Если одно из них делится на другое нацело, выведите 1, иначе выведите любое другое целое число.

При решении этой задачи нельзя пользоваться условной инструкцией if и циклами.
ПримерВвод Вывод
2
8 1
8
2 1
3
5 7
ссыль
Poma][a вне форума Ответить с цитированием
Старый 27.09.2012, 20:08   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
uses crt;
var
m,n:longint;
s:byte;
BEGIN
read(m,n);
S:=(1 div (1+abs(m)))*(1 div (1+abs(n)))*100;
S:=S+(n mod (m + 1 div (1+abs(m))))*(m mod (n + 1 div (1+abs(n))))+1;
write(s);
END.

Того же года.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.09.2012, 20:09   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Так прокатило
Код:
var 
  x : integer;
begin
  readln(x);
  writeln(integer((x mod 100) = 10*(x div 100 mod 10) + (x div 1000)))
end.
eoln вне форума Ответить с цитированием
Старый 27.09.2012, 20:16   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Очень интересно!
Можно комментарии по поводу integer в WriteLn'e ?

Мой вариант про №2
Код:
program Task2957;

var

   a, b : LongInt;

begin
     Read (a, b);
     WriteLn (1 + (a mod b)* (b mod a)); 
end.
Poma][a вне форума Ответить с цитированием
Старый 27.09.2012, 20:31   #7
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

integer - это для преобразования типов
(x mod 100) = 10*(x div 100 mod 10) + (x div 1000) - логическое выражение принимает значение true/false или же 1/0 в числовом эквиваленте
eoln вне форума Ответить с цитированием
Старый 27.09.2012, 20:33   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ух ты. Спасибо Вам огромное! Просветили!

Теперь логика :
Хамелеоны
На острове живут 13 желтых, 15 синих и 17 красных хамелеонов. Когда встречаются два хамелеона разного цвета, они перекрашиваются в третий цвет. В остальных случаях ничего не происходит. Может ли случиться так, что все хамелеоны окажутся одного цвета?

Я решал через инвариант.

Последний раз редактировалось Poma][a; 27.09.2012 в 20:45.
Poma][a вне форума Ответить с цитированием
Старый 28.09.2012, 11:02   #9
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Хех, странно, что тему еще не прикрыли, но будем пользоваться моментом )).
Цитата:
Сообщение от Poma][a Посмотреть сообщение
Я решал через инвариант.
Хитрый Ромаха намекнул, что решил задачу.. Сказать "через инвариант" - это = ничего не сказать, поскольку инвариант надо еще найти. Это в физике все просто - есть пара инвариантов, энергия и импульс - вот и решай себе.. ))

Мне на ум пока пришли два решения. Одно можно назвать "через инвариант" )). Второе - без изысков, просто стандартный общий метод - дубовый, зато надежный.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 28.09.2012, 12:01   #10
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Теперь логика :
Хамелеоны
На острове живут 13 желтых, 15 синих и 17 красных хамелеонов. Когда встречаются два хамелеона разного цвета, они перекрашиваются в третий цвет. В остальных случаях ничего не происходит. Может ли случиться так, что все хамелеоны окажутся одного цвета?
По логике, да. Когда последний неперекрашенный встретится с третьим цветом.

Цитата:
Сообщение от TinMan Посмотреть сообщение
Хех, странно, что тему еще не прикрыли... )).
А в чём собственно странность; что тут такого?!
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
игры ivan12ivan Общие вопросы по Java, Java SE, Kotlin 2 07.03.2012 09:06
игры Епгений Общие вопросы Delphi 14 14.05.2011 16:40
Моделирование человеческого разума булевской математикой Fog Свободное общение 28 12.11.2010 06:51
разработка игры "Реверси". Имеется код этой игры на С++ CD-RW Помощь студентам 0 28.03.2010 00:13