Числа-палиндромы

[ cpp ]

02 Jul 2012

 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // ~~ Задача №14 ~~
 // ~~ По заданному числу М строится последовательность, ~~
 // ~~ в которой первый элемент равен М, а каждый ~~
 // ~~ следующий - полусумма элемента и его перевертыша. ~~
 // ~~ По каждой из некоторого количества пар чисел М, К ~~
 // ~~ указать встретился ли палиндром среди не более чем~~
 // ~~ К первых элементов последовательности, ~~
 // ~~ порождаемой числом М. ~~
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <iostream>
#include <cmath>
using namespace std;
int m,k;
 //Нахождение перевертыша.
int revers (int n)
{
int a,b;
a=n;
for(b=0; a>0; a/=10)
{
b=a%10 + b*10;
}
return b;
}
 //Нахождение следующего элемента последовательности.
int next (int n)
{return (n+revers(n))/2; }
 //Проверка на палиндром.
bool palindrom (int m, int k)
{ int a,b;
if (m==revers(m)) goto lab;
b=m; a=0;
do
{
b=next(b);
if (b==revers(b)) goto lab;
 ++a;
} while (a<=k);
return false;
lab: cout<<b<<endl;
return true;
}
int main()
{
cout<<"Vvedite n \n";
cin>>m;
cout<<revers(m)<<endl;
cout<<"Kol-vo? ";
cin>>k;
if (palindrom(m,k)==true) cout<<"Palindrom byl \n"; else cout<<"Palindroma ne bylo \n";  }