火柴游戏(match)-2022蜀山区赛初中组第3题

news2024/11/16 6:48:21
题目描述

锤锤和柯西在玩火柴棒游戏,他们用火柴棒拼成不同的数字。规则如下:

这是火柴所形成10个数字的方式,每个数字所需的火柴数量不一样。现在给两人每人发N根火柴棒。锤锤要用所有火柴棒摆出其所能摆出最小的数,而柯西则需要用所有火柴棒摆出其所能摆出的最大的数。当然,前导 0 或者摆出不规则的数字什么的都算是作弊。现在他们俩都想尽快知道答案,于是请你帮忙。

输入格式

从文件 match.in 中读取数据。

输入包括若干组数据。第一行为一个数字 T,表示锤锤和柯西会进行 T 次游戏。

接下来T行,每行一个正整数 N,表示火柴的数量。

输出格式

输出到文件 match.out 中。

T 行,每组数据包括一行,分别为锤锤所能摆出的最优值以及柯西所能摆出的最优值。

输入输出样例

输入样例1:

1
2

画写样例1:

1 1

说明

【数据范围】

对于 K%的数据:N<=K (K=10,20,...,100)

对于 100%的数据:2<=N<=100,0<T<100

【耗时限制】1000ms 【内存限制】256MB


这一题,上来第一想法就是dfs,但是我可以明确的告诉你们,dfs过不了一点儿

那既然dfs过不了,就得想其他方法吧,总不能不写

再仔细瞅瞅,可以发现一个求最大,一个求最小

好像可以用贪心

那既然是贪心,我们就得规划贪心策略

我们先来看最大的

        由于我们知道,两个数中,位数越大的,数值越大,那就明确了一件事情:位数要尽量的

多,也就是每一个数字占的小棍数尽量少,再回过头来看一下在0~9中哪一个最少,很明显,是1,

1只需要两根棍子;所以,我们很容易得到一个结论:

如果总棍数是一个偶数,那么就可以安排上n除以2个1,

如果是奇数呢,就安排上0~9中棍棒数次小的且为奇数的数字,也就是7,需要3根棍子,我们把他安排在第一位

string maxn(int n){
    string ans="";
    if(n%2==1) ans+='7',n-=3;
    for(int i=2;i<=n;i+=2){
        ans+='1';
    }
    return ans;
}

最大的解决了,来看一下最小的

最小的首先位数尽量小,8用的棍棒数最多,有7根,我们先安排8上

如果mod 7余0,不用判断,直接return

如果mod 7余1,把第一个8换下来,换成“10”

如果mod 7余2,不用换,直接在前面加1

如果mod 7余3,就需要再次分类讨论:

        当棍棒数为10是,别多想,直接把ans改成“22”

        否则,把前两个8改成“200”

如果mod 7余4 把第1个8换成“20”;

如果mod 7余5 不用换,直接加“2“;

如果mod 7余6,就加一个6

下面的是片段代码,完整代码在最后

string minn(int n){
    string ans="",w="00174208";
    if(n<=7){
        ans+=w[n];
        return ans;
    }
    int c=n/7,m=n%7;
    for(int i=1;i<=c;i++) ans+="8";
    if(m==0) return ans;
    if(m==1){
        ans[0]='0';
        ans="1"+ans;
    }
    else if(m==2){
        ans="1"+ans;
    }
    else if(m==4){
        ans[0]='0';
        ans="2"+ans;
    }
    else if(m==5){
        ans="2"+ans;
    }
    else if(m==3){
        if(ans.size()==1) ans="22";
        else{
            ans[0]=ans[1]='0';
            ans="2"+ans;
        }
    }
    else{
        ans="6"+ans;
    }
    return ans;
}

这个是完整代码 

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <string>
using namespace std;
int T;
string maxn(int n){
    string ans="";
    if(n%2==1) ans+='7',n-=3;
    for(int i=2;i<=n;i+=2){
        ans+='1';
    }
    return ans;
}
string minn(int n){
    string ans="",w="00174208";
    if(n<=7){
        ans+=w[n];
        return ans;
    }
    int c=n/7,m=n%7;
    for(int i=1;i<=c;i++) ans+="8";
    if(m==0) return ans;
    if(m==1){
        ans[0]='0';
        ans="1"+ans;
    }
    else if(m==2){
        ans="1"+ans;
    }
    else if(m==4){
        ans[0]='0';
        ans="2"+ans;
    }
    else if(m==5){
        ans="2"+ans;
    }
    else if(m==3){
        if(ans.size()==1) ans="22";
        else{
            ans[0]=ans[1]='0';
            ans="2"+ans;
        }
    }
    else{
        ans="6"+ans;
    }
    return ans;
}
int main(){
    scanf("%d",&T);
    while(T--){
        int x;
        scanf("%d",&x);
        cout<<minn(x)<<" "<<maxn(x)<<endl;
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1988594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【简历】吉林某985大学:Java简历指导,面试通过率低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份顶级985的25届Java简历。顶级985现在的目标只有一个&#xff0c;就是大厂秋招。那么这位同学跟211和普通同学比&#xff0c;优势还…

【JVM】Java内存区域图文详解

1.JVM运行时区域总览 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。 JVM运行时区域也成为Java内存区域。 在讨论Java内存模型时&#xff0c;通常将其分为线程共享区域和线程私有区域&#xff1a; 2.线程私有区域 2.1.程序计数器 程序计…

springboot船舶维保管理系统--论文源码调试讲解

第二章 相关技术 本次开发船舶维保管理系统使用的是Vue进行程序开发&#xff0c;船舶维保管理系统的数据信息选择MySQL数据库进行存放。 2.1 VUE介绍 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue…

Unity入门1——基本操作

VIew工具 选中View工具后&#xff0c;按住鼠标左键&#xff0c;即可实现拖拽 按住Alt鼠标右键&#xff0c;移动鼠标即可实现缩放&#xff08;或使用鼠标滚轮&#xff09; Move工具 选中移动工具&#xff0c;即可对界面中的物品进行移动。快捷键W 快速定位物体 在层级管理器中…

回溯分割+子集篇--代码随想录算法训练营第二十二天| 131.分割回文串,93.复原IP地址,78.子集,90.子集II

131.分割回文串 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 讲解视频&#xff1a;131.分割回文串 题目描述&#xff1a; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文串 。返回 s 所有可能的分割方案。 示例 …

2.3 Python 基本运算符

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

C++ STL专题 list的讲解

目录 1.list的介绍和使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.list的介绍和使用 1.1 list的介绍 1.list是可以在常数范围内任意位置进行插入和删除的序…

git系统学习

git系统学习 git命令行获取git 版本号 创建初始版本库创建git库初始化用户名和密码查看用户名和邮箱修改用户名和密码 将文件添加到版本库中删除暂存文件提交代码查看提交信息查看更加详细的信息查看提交差异版本库内文件的删除和重命名删除库里的文件重命名库里的文件 打标签查…

【RunnerGo】离线安装成功版本

目录 一、下载 二、解压安装包 三、修改安装配置 3.1 编辑修改安装参数&#xff08;我没有改&#xff0c;默认安装即可&#xff09; 3.2 安装目录结构说明 四、执行安装 五、检查服务并使用 六、访问 前言&#xff1a;最近在调研一个新工具&#xff0c;发现RunnerGo&…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑通信-物理耦合的有源配网故障后协调恢复策略 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

SpringBoot banner 推荐

看看我这个怎么样 效果图 在resources下面创建一个banner.txt&#xff0c;把下面代码放到进去就可以用了 ${AnsiColor.GREEN} Application Version: ${ruoyi.version} Spring Boot Version: ${spring-boot.version}69696969 696969696969 696969 …

Facebook的技术创新:如何改变社交网络的面貌

Facebook作为全球最大的社交网络平台之一&#xff0c;一直在不断推动技术创新&#xff0c;以提升用户体验和社交互动质量。这些技术创新不仅改变了人们的社交方式&#xff0c;也深刻影响了整个社交网络的面貌。 人工智能驱动的内容推荐 Facebook利用人工智能&#xff08;AI&am…

深圳市光明区副区长彭颖一行莅临立仪科技参观考察

2024年8月5日上午&#xff0c;‌深圳市光明区彭颖副区长一行领导莅临深圳立仪科技有限公司调研指导工作&#xff0c;深圳市智能传感行业协会执行会长姜勇以及协会秘书长张喻陪同调研。我公司总经理刘杰波、以及各部门负责人陪同参加。 彭颖副区长一行领导在刘总的接待和讲解下&…

vue实现页面中点击预览报告,实现将vue组件变成pdf文件进行弹窗展示

一.实现效果 页面中点击预览报告&#xff0c;实现将vue组件变成pdf文件进行弹窗展示 定义的方法文件 import html2canvas from "html2canvas"; import jsPDF, { RGBAData } from "jspdf";/** a4纸的尺寸[595.28,841.89], 单位毫米 */ const [PAGE_WIDT…

微深节能 环形运动机械定位控制系统 格雷母线

格雷母线定位系统作为一种高精度、无磨损的非接触式位置检测系统&#xff0c;特别适用于环形运动机械的定位控制。 一、格雷母线定位系统的概述 格雷母线定位系统主要由一台地面电气柜、一台车载电气柜、格雷母线以及天线箱等组成。其核心部件是格雷母线&#xff0c;一种特殊的…

深度学习人脸表情识别结课作业留存

0.前言 大三下学期学习了深度学习神经网络的课程&#xff0c;老师留下了人脸表情识别的结课作业&#xff0c;在网上找到了一个想相对不错的开源项目作为基础完成了本次的结课作业。 1.项目链接 Challenges in Representation Learning: Facial Expression Recognition Chall…

运动耳机怎么选?来看看奥运冠军喜欢的运动耳机!

在奥运的竞技舞台上&#xff0c;每一次心跳的跃动都是对自我极限的勇敢挑战&#xff0c;运动员的每一个动作背后&#xff0c;都承载着不懈的努力与对梦想的执着追求。如今&#xff0c;运动科技正以前所未有的速度改变着我们的运动方式&#xff0c;一款优秀的运动耳机成为了连接…

Prompt Fuzzer:用于增强 GenAI 应用程序的开源工具

Prompt Fuzzer 是一个开源工具&#xff0c;可以评估GenAI应用程序的系统提示针对基于动态 LLM 的威胁的安全性。 Prompt Fuzzer 功能&#xff1a; 1. 模拟十几种类型的 GenAI 攻击。 2. 该工具会根据系统提示自动进行情境化&#xff0c;针对与 GenAI 应用程序相关的特定主题或行…

【Python机器学习】回归——用线性回归找到最佳拟合直线

线性回归的优缺点&#xff1a; 优点&#xff1a;结果易于理解&#xff0c;计算上不复杂 缺点&#xff1a;对非线性的数据拟合不好 使用数据类型&#xff1a;数值型和标称型数据。 回归的目的是预测数值型的目标值。最直接的办法是依据输入写出一个目标值的计算公式。例如预测汽…

【C语言】预处理详解(上)

文章目录 前言1. 预定义符号2. #define 定义常量3. #define定义宏4. 带有副作用的宏参数5. 宏替换的规则 前言 在讲解编译和链接的知识点中&#xff0c;我提到过翻译环境中主要由编译和链接两大部分所组成。 其中&#xff0c;编译又包括了预处理、编译和汇编。当时&#xff0c…