前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PAT 甲级 1024 Palindromic Number

PAT 甲级 1024 Palindromic Number

作者头像
ShenduCC
发布2018-04-27 10:38:56
6870
发布2018-04-27 10:38:56
举报
文章被收录于专栏:算法修养算法修养

1024. Palindromic Number (25)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

16000 B

判题程序

Standard

作者

CHEN, Yue

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers.

Non-palindromic numbers can be paired with palindromic ones via a series of operations. First, the non-palindromic number is reversed and the result is added to the original number. If the result is not a palindromic number, this is repeated until it gives a palindromic number. For example, if we start from 67, we can obtain a palindromic number in 2 steps: 67 + 76 = 143, and 143 + 341 = 484.

Given any positive integer N, you are supposed to find its paired palindromic number and the number of steps taken to find it.

Input Specification:

Each input file contains one test case. Each case consists of two positive numbers N and K, where N (<= 1010) is the initial numer and K (<= 100) is the maximum number of steps. The numbers are separated by a space.

Output Specification:

For each test case, output two numbers, one in each line. The first number is the paired palindromic number of N, and the second number is the number of steps taken to find the palindromic number. If the palindromic number is not found after K steps, just output the number obtained at the Kth step and K instead.

Sample Input 1:

代码语言:javascript
复制
67 3

Sample Output 1:

代码语言:javascript
复制
484
2

Sample Input 2:

代码语言:javascript
复制
69 3

Sample Output 2:

代码语言:javascript
复制
1353
3
代码语言:javascript
复制
由于数字会超longlong int 所以用数组
代码语言:javascript
复制
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <map>
#include <string>

using namespace std;
typedef long long int LL;
char b[20005];
int a[20005];
int c[20005];
int k;
int len;
int add()
{
  int i=0;
  int j=0;
  int num=0;
  while((i<len&&j<len)||num!=0)
  {
    a[i]=(a[i]+c[j]+num);
    num=a[i]/10;
    a[i]%=10;
    i++;
    j++;
  }
  return i;
}
void fun()
{
  int cnt=0;
  for(int i=len-1;i>=0;i--)
    c[cnt++]=a[i];
}
int judge()
{
  int i=0;int j=len-1;
  while(i<=j)
  {
    if(a[i]!=a[j])
      return 0;
    i++,j--;
  }
  return 1;
}
void output(int x)
{
  for(int i=len-1;i>=0;i--)
    printf("%d",a[i]);
  cout<<endl;
  cout<<x<<endl;
}
int main()
{
  scanf("%s",b);
  scanf("%d",&k);
  int l=strlen(b);
  len=l;
  for(int i=0;i<len;i++)
    a[i]=b[i]-'0';
  if(judge())
  {
    output(0);
    return 0;
  }

  for(int i=1;i<=k;i++)
  {
    fun();
    len=add();
    if(judge())
    {
      output(i);
      return 0;
    }
  }
  output(k);
  return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-05-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1024. Palindromic Number (25)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档