题意:确定一个回文偶数十进制数字,输入k和q,求前k小的和对q取余的值
解题思路:首先确定一个,第k个回文偶数一定前半段一定是k,比如第12个,这个数就是1221;
代码:
#include<iostream>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
int main()
{
    ll k,q;
    ll sum;
    ll temp;
    ll x1;
    ll x2;
    int a[15];
    int cnt;
    cin>>k>>q; sum=0;
    while(k!=0)
    {
        cnt=0;
        temp=0;
        int m=k;
        while(m)
        {
            a[++cnt]=m%10;
            m=m/10;
        }
        x1=1;x2=1;
        for(int i=1;i<=cnt;i++)
            x2=x2*10;
        //cout<<x2<<endl;
        for(int i=cnt;i>=1;i--)
        {
            temp+=x1*a[i];
            x1*=10;
        }
       // cout<<temp<<endl;
        for(int i=1;i<=cnt;i++)
        {
            temp+=x2*a[i];
            x2*=10;
        }
       //cout<<temp<<endl;
       temp=temp%q;
       sum+=temp;
       sum=sum%q;
       k--;
    }
cout<<sum<<endl;
    return 0;
}
