FJNU第二十届低年级程序设计竞赛(正式赛)-Problem F-火柴棒_福师大低年级程序设计竞赛-程序员宅基地

技术标签: FJNU第二十届低年级程序设计竞赛正式赛  ACM-贪心  Problem F-火柴棒  

问题 F: 火柴棒

时间限制: 1 Sec  内存限制: 128 MB

题目描述

Flag巨巨的桌上有着非常多的火柴棒。这些火柴棒被摆成了一个十进制数。

每个数字字母用火柴棒的摆法如下图。


这个十进制数有n位。某一天,Flag巨巨想把这些火车棒重新排列一次。他喜欢美妙的数字,所以他希望排出的新的数字是一个回文数(如12321,1221都是回文数,1231则不是回文数),并且要恰好用完所有的火柴棒。同时他也喜欢大的数字,所以他希望排出来的新数字要尽量大。现在我们知道火柴棒原本排列的数字,你能求出这些火柴棒能排列出的最大的回文数是什么吗?


输入

第一行给定一个整数T,代表测试数据组数
之后T行每行给定一个n位十进制数(1<=n<=10000),表示火柴棒原本排列的数字。

输出

根据输入数据,每行输出一个十进制数,表示这些火柴棒能排列出的最大的回文数。

样例输入

3248

样例输出

511171

提示


每一个数字所需要的火柴棒数量与题目中的图相符。



对于样例输入,原本排列的数是‘2’,总共有5根火柴棒,可以排列出的最大的回文数为5。


思路: 贪心算法。先字符串处理出全部火柴数,再分类讨论:1.偶数个,全为1;2.奇数个且除以2后仍为奇数,则中间7,两边7,共3个7,其余为1;3.奇数个且除以2后为偶数,则仅中间7,其余为1.


#include <stdio.h>
#include <queue>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <iostream>   // C++头文件,C++完全兼容C
#include <algorithm>  // C++头文件,C++完全兼容C
#define fre  freopen("in.txt","r",stdin)   //以文件代替控制台输入,比赛时很常用,能缩短输入测试样例的时间
#define INF 0x3f3f3f3f
#define inf 1e60
using namespace std;  // C++头文件,C++完全兼容C
#define N 100005       // 宏定义
#define LL long long  //宏定义
char op[N];
int main()
{
   int T;
   scanf("%d",&T);
   getchar();
   while(T--)
   {
       int n,m;
       scanf("%s",op);
       int k=-1;
           m=0;
           while(op[++k]!='\0')                          //每个数相对的火柴数
           {
               if(op[k]=='0'||op[k]=='6'||op[k]=='9')
                m+=6;
                else if(op[k]=='2'||op[k]=='3'||op[k]=='5')
                m+=5;
                else if(op[k]=='1') m+=2;
                else if(op[k]=='4') m+=4;
                else if(op[k]=='7') m+=3;
                else if(op[k]=='8') m+=7;
           }
           if(m==5){                                      //特判5
            printf("5\n");
            continue;
           }
           int t=m/2;
           int ans=m%2;
           if(ans==0)                                      //偶数
           {            
               for(int i=0;i<t;i++)
               printf("1");
               printf("\n");
           }
           else
           {
               if(t%2==0)                                   //除以2为偶数
               {                
                   for(int i=1;i<t;i++)
                   {
                       if(i==1 || i==(t/2) || i==t-1)
                       {
                           printf("7");
                       }
                       else
                        printf("1");
                   }
                   printf("\n");
               }
               else                                          //除以2后为奇数             
               {                              
                   for(int i=1;i<=t;i++)                     
                   {
                       if(i==((t+1)/2))
                        printf("7");
                       else
                        printf("1");
                   }
                   printf("\n");
               }
           }
   }
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/survivorone/article/details/53449023

智能推荐

真·simulink车辆仿真基础教程-这玩意真不难:仿真基础知识(1)_真simulink车辆仿真基础教程-程序员宅基地

文章浏览阅读1.1k次,点赞25次,收藏29次。汽车动力性概括来讲,是指汽车在良好路面上直线行驶时,由汽车受到的纵向外力决定、所能达到的平均行驶速度。通常用最高车速、爬坡能力、加速时间表征。_真simulink车辆仿真基础教程

Swagger2总结(Swagger2引入、Spring-Swagger2整合、Swagger2常用注解与插件)-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏12次。Swagger2引入、Spring-Swagger2整合、Swagger2常用注解与插件_swagger2

JVM原理讲解和调优_jvm原理及性能调优-程序员宅基地

文章浏览阅读881次。一、什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java_jvm原理及性能调优

社交网络分析重要概念简介、相关资料和前沿研究(持续更新ing...)_social network的bei 和ei-程序员宅基地

文章浏览阅读804次。社交网络分析重要概念简介、相关资料和前沿研究_social network的bei 和ei

pythontcp服务器框架_GitHub - xiaowang359/ChatServer: 基于python-tornado 与 sqlalchemy建立的1个TCP聊天服务器框架示例。...-程序员宅基地

文章浏览阅读140次。version 0.1 版本还存在一些BUG,采用sqlite数据库做为测试关于推送部分大家可以在pypi搜索anps 下载安装apnsclient 测试###通用部分提交length = json整体包长action = 协议关键字部分提交部分提交 uid ,为了使协议通用语web环境返回status = 状态成功失败errcode = 错误代码,需要具体定义common1000010001 ..._python tornado tcp 聊天

TensorFlow安装过程问题汇总_loading channels: failed-程序员宅基地

文章浏览阅读1.6k次。1. 问题: conda search numpy 以及 conda search --full-name python 失败。失败的现象:Loading channels: failedCondaHTTPError: HTTP 404 NOT FOUND for url <http://pypi.douban.com/simple/noarch/repodata.json>..._loading channels: failed

随便推点

PYTHON常用库简介_python常用库介绍-程序员宅基地

文章浏览阅读8.3k次,点赞6次,收藏80次。Python科学计算基础库:Numpy,Pandas,Scipy,Matplotlib1.NumPy支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,线性代数,傅里叶变换和随机数功能底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。2.PandasPandas是一个强大的基于Numpy分析结构化数据的工具集;Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Micros_python常用库介绍

Anaconda创建Pytorch虚拟环境(排坑详细)_anaconda创建pytorch环境-程序员宅基地

文章浏览阅读5.9w次,点赞150次,收藏1.4k次。利用conda指令搭建Pytorch环境,并在Pytorch环境中安装GPU版Pytorch相关包。_anaconda创建pytorch环境

Linux: 磁盘状态观察命令lsblk、blkid-程序员宅基地

文章浏览阅读955次,点赞12次,收藏32次。有时我们在磁盘规划前会想要确定一下当前系统的文件系统或磁盘分区情况。这时,就有几个命令可以供选择,通过本文,可以学习这些命令的使用。_lsblk

构造方法与方法的区别详解_构造方法和普通方法之间的区别-程序员宅基地

文章浏览阅读5.7k次,点赞11次,收藏46次。结论!!!学生类当中虽然没有构造方法 但是测试代码当中Student对象也创建完成了。是因为当类中没有任何构造方法的时候系统默认构造一个无参数的构造方法构造方法和普通方法结构的区别如下:​​​​​​​调用构造方法怎么调用呢?..._构造方法和普通方法之间的区别

高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据...-程序员宅基地

文章浏览阅读199次。全文链接:http://tecdat.cn/?p=23378在本文中,我们将使用基因表达数据。这个数据集包含120个样本的200个基因的基因表达数据。这些数据来源于哺乳动物眼组织样本的微阵列实验(点击文末“阅读原文”获取完整代码数据)。相关视频1 介绍在本文中,我们将研究以下主题证明为什么低维预测模型在高维中会失败。进行主成分回归(PCR)。使用glmnet()进行岭回归、lasso 和弹性网el..._高维数据回归方法

中科数安 | 防泄密软件-程序员宅基地

文章浏览阅读419次,点赞16次,收藏3次。此外,中科数安防泄密软件还具有智能加密功能,可以识别散落在企业不同位置的机密文件,并对其强制加密,非核心数据不被过分加密,防止敏感内容泄漏。同时,它还支持离网办公,针对出差人员或网络故障等原因引起的客户端离网,用户可以发起离网审批,确保终端密文在出差过程中保持可用状态,不影响正常办公。它采用了多种加密机制和技术手段,确保企业数据的安全性、完整性和机密性。总之,中科数安防泄密软件是一种功能强大、技术先进的企业数据保护软件,可以有效地防止敏感数据的泄露和非法访问,保障企业的信息安全和业务连续性。

推荐文章

热门文章

相关标签