回文数

该博客介绍了一道编程题目,要求根据给定的每个数字出现的次数,找到一个最小的回文数,且不允许有前导0。示例给出了不同输入和对应的输出结果。
摘要由CSDN通过智能技术生成

链接:https://ac.nowcoder.com/acm/contest/7745/A
来源:牛客网

题目描述
Froggy 分别给出 10 个数码的出现次数,你需要找到一个由这些数码组成的最小的数,满足:

  1. 这个数是回文的。
  2. 不能有前导 0。
    注:假设这个数字长度是 LL,那么这个数是回文的当且仅当对于任意的 i\in [1,L]i∈[1,L],第 ii 位的数码和第 L-i+1L−i+1 位的数码相同。
    快来帮帮 Froggy 吧!
    输入描述:
    一行 10 个自然数,分别表示数码 0\sim 90∼9 的出现次数。
    输出描述:
    如果无解,只输出 “-1”。(不含引号)
    否则,输出一个数表示最小的解。
    示例1
    输入
    复制
    0 2 4 2 0 2 0 0 0 0
    输出
    复制
    1223553221
    示例2
    输入
    复制
    1 1 4 5 1 4 0 0 0 0
    输出
    复制
    -1
    示例3
    输入
    复制
    4 0 2 3 0 0 0 2 0 0
    输出
    复制
    20037373002
    示例4
    输入
    复制
    2 0 0 0 0 0 0 0 0 1
    输出
    复制
    -1
    说明
    注意不能有前导 0。
    示例5
    输入
    复制
    1 0 0 0 0 0 0 0 0 0
    输出
    复制
    0
    备注:
    保证输入的所有数都不超过 1010,且至少有一个数大于 00。
#include<bits/stdc++.h>
using namespace std;
int a[10];
int main()
{
   
	vector<int>v;
	int sum=0;
	int ans1=0,ans2=0;
	for(int i=0;i<10;i++)
	{
   
	cin>>a[i];
	sum+=a[i];
	if(a[i]%2==1) ans1++;
	else ans2++;
}
	bool flag=false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值