URAL 1123. Salary 回文数

          比赛的时候没怎么读懂题目,其实就是找>=给出的数的回文数。设原先的月薪为a,回文月薪b,先让a的前半部分等于b,再对称着补全b的后半部分,然后判断这时候b比a大,直接输出,否则把b的前半部分加1,再对称着找出后半部分。输出即可。


#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#define MAXN 2010
using namespace std;
int main()
{
    //freopen("in.txt",'r',stdin);
    char original[MAXN],s[MAXN];
    cin>>original;
    int len=strlen(original);
    int l=0,r=len-1;
    for(int i=0; i<=(len-1)/2; i++,l++,r--)
    {
        s[r]=original[i];
        s[l]=s[r];
    }
    s[len]='\0';
    if(strcmp(s,original)>=0)
    {
        cout<<s<<endl;
        return 0;
    }
    r=(len-1)/2;
    s[r] ++;
    int flag=0;
    while(s[r]>'9'&&r>=0)
    {
        s[r]='0';
        s[r-1]++;
        r--;
    }
    if(s[0]>'9')
    {
        s[0]='0';
        flag=1;
        cout<<'1';
    }
    int j,i;
    for( i=(len-1)/2,j=len/2; i>=0; i--,j++)
        s[j]=s[i];
    if(flag)
        s[j++]='1';
    s[j]='\0';
    cout<<s<<endl;
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值