Повар ложит в печь пирог в N время, пирог должен жарится до ближайшего полиндромного времени. допустим ввели 1015, на выводе мы должны получить 1111.

Программа достаточно тяжелая) Сам пытаюсь сделать и сам у себя нахожу уйму ошибок. Что настрочил во вложениях. Кто возьмется?

1

Ответы и объяснения

2013-09-25T22:42:57+04:00
C++:
#include <iostream>
using namespace std;

int count(unsigned int n)
{
  int k = 0;
  while (n!=0)
  {
    ++k;
    n/=10;
  }
  return k;
}

bool plndr(unsigned int n)
{
  int k = 1;
  unsigned int m = n,c = 0;
  for (int i = 1; i<=count(n)-1; i++)
       k*=10;
  while (m!=0)
  {
    c+=m%10*k;
    k/=10;
    m/=10;
  }
  if (c==n)
    return true;
  else return false;
}

int main()
{
  unsigned int n;
  cout <<"N = ";
  cin >>n;
  while (!plndr(n))
  {
    ++n;
  }
  cout <<"Pirog gotov! Time: " <<n <<'\n';
  return 0;
}

Pascal:
var n:longint;
function count (n:longint):integer;
var k:integer;
begin
  k:=0;
  while n<>0 do
    begin
      inc(k);
      n:=n div 10;
    end;
  count:=k;
end;
function plndr (n:longint):boolean;
var i:integer;
     k,m,c:longint;
begin
  k:=1;
  m:=n;
  c:=0;
  for i:=1 to count(n)-1 do k:=k*10;
  while m<>0 do
    begin
      c:=c+(m mod 10)*k;
      k:=k div 10;
      m:=m div 10;
    end;
  if c=n then plndr:=true else plndr:=false;
end;
begin
  write ('N = ');
  readln (n);
  while (not plndr(n)) do
   inc(n);
  writeln ('Pirog gotov! Time: ',n);
  readln;
end.
Не понял твоего вопроса?
Комментарий удален
Ахаха)) Если-бы) Это из моей "Великой Державы" РМ.
Олимпиадные задачи ведь проверяютя специальной тестирующей системой
Нееет, проявляя логику) Но помечать твой ответ, как нарушение - я не буду) Ты ведь попытался как я :D :D А Паштету респект)