SZTUOJ 1017.火柴人
2021/6/19 6:26:49
本文主要是介绍SZTUOJ 1017.火柴人,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Description
今天,你买了一盒火柴,打算和同学比拼谁能用有限的火柴得到一个最大数字。火柴拼数字规则是,拼出零到九分别需要6、2、5、5、4、5、6、3、7、6个火柴。我们会给你n个不同火柴数,求问不同的火柴数分别最多能组成多大的数字。如果不能组成数字,输出-1。 对于某个特定的火柴数a,求出其能组成的最大的数字
Input
第一行输入一个n,接下来n行每行一个个数a,0<=a<=2^31-1
Output
每行输出一个能组成的最大数字。
Sample Input
3 1 2 4
Sample Output
-1 1 11
Hint
火柴要省着用
Source
SZTU Monthly 2020 Oct.
Author
徒手拆机甲
题目解析
这道题是我出的,题解直接搬过来就好了,这道题目需要考虑一个很显然的贪心策略,即1如果用于进位,他的价值相当于把当前数字乘10+当前数字本身,所以只要有2个火柴我们就尽可能选择1进行输出。而如果给的火柴数是奇数,说明我们按上述策略会留下一根火柴,我们可以发现7和1需要的火柴数只差1根,所以我们可以把位于最高位的1换成7.是一个很基础的贪心题,有时候这种题就需要一些大胆,需要一点思维。
#include <bits/stdc++.h> using namespace std; int main() { int t,n; cin >> t; while(t--) { cin >> n; if(n<=1) printf("-1"),n=0; if(n & 1) printf("7"), n -= 3; while(n) printf("1"), n -= 2; printf("\n"); } return 0; }
这篇关于SZTUOJ 1017.火柴人的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南