Re: 10018 - Reverse and Add
Posted: Wed Jan 07, 2015 3:03 am
Check My Submissions for the reason for your CE.
Write your own strrev()
Write your own strrev()
Code: Select all
/*Problem 10018*/
#include <stdio.h>
unsigned int addReverse(unsigned int);
int palindrome(unsigned int);
int main() {
int num;
scanf("%d", &num);
unsigned int added, c;
while (num--) {
c = 0;
scanf("%d", &added);
do {
added = addReverse(added);
c++;
} while (!palindrome(added));
printf("%d %d\n", c, added);
}
return 0;
}
unsigned int addReverse(unsigned int added) {
unsigned int reverse = 0, temp = added;
while (temp != 0) {
reverse *= 10;
reverse += temp % 10;
temp /= 10;
}
return added + reverse;
}
int palindrome(unsigned int added) {
unsigned int reverse = 0, temp = added;
while (temp != 0) {
reverse *= 10;
reverse += temp % 10;
temp /= 10;
}
return added == reverse ? 1 : 0;
}
Code: Select all
#include <stdio.h>
int main()
{
long long int n, rev,original,num,c,test_num;
int a[100];
scanf("%lld",&test_num);
for(c=1; c<=test_num; c++)
{
scanf("%lld", & n);
while(n!=rev)
{
original=n;
rev=0;
while (n!=0)
{
rev=rev*10;
rev=rev+n%10;
n=n/10;
}
if(rev==num)
{
break;
}
num=rev+original;
n=num;
}
printf("%lld\n",num);
}
return 0;
}
Code: Select all
#include <stdio.h>
#include <stdlib.h>
int revNumber( long long n )
{
long long rev = 0;
while(n) {
rev = rev * 10 + (n % 10);
n /= 10;
}
return rev;
}
int main()
{
int nbCase = 0, i = 0;
int count = 0;
long long n = 0, sum = 0;
scanf("%d", &nbCase);
for(i = 0; i < nbCase; i++) {
scanf("%lld", &n);
sum = n + revNumber(n);
count = 1;
while (revNumber(sum ) != sum) {
sum = revNumber(sum) + sum;
count += 1;
}
printf("%d %lld\n", count, sum);
}
return 0;
}