HDU-1015,Safecracker

简介: HDU-1015,Safecracker

Problem Description:


=== Op tech briefing, 2002/11/02 06:42 CST ===

"The item is locked in a Klein safe behind a painting in the second-floor library. Klein safes are extremely rare; most of them, along with Klein and his factory, were destroyed in World War II. Fortunately old Brumbaugh from research knew Klein's secrets and wrote them down before he died. A Klein safe has two distinguishing features: a combination lock that uses letters instead of numbers, and an engraved quotation on the door. A Klein quotation always contains between five and twelve distinct uppercase letters, usually at the beginning of sentences, and mentions one or more numbers. Five of the uppercase letters form the combination that opens the safe. By combining the digits from all the numbers in the appropriate way you get a numeric target. (The details of constructing the target number are classified.) To find the combination you must select five letters v, w, x, y, and z that satisfy the following equation, where each letter is replaced by its ordinal position in the alphabet (A=1, B=2, ..., Z=26). The combination is then vwxyz. If there is more than one solution then the combination is the one that is lexicographically greatest, i.e., the one that would appear last in a dictionary."


v - w^2 + x^3 - y^4 + z^5 = target


"For example, given target 1 and letter set ABCDEFGHIJKL, one possible solution is FIECB, since 6 - 9^2 + 5^3 - 3^4 + 2^5 = 1. There are actually several solutions in this case, and the combination turns out to be LKEBA. Klein thought it was safe to encode the combination within the engraving, because it could take months of effort to try all the possibilities even if you knew the secret. But of course computers didn't exist then."


=== Op tech directive, computer division, 2002/11/02 12:30 CST ===


"Develop a program to find Klein combinations in preparation for field deployment. Use standard test methodology as per departmental regulations. Input consists of one or more lines containing a positive integer target less than twelve million, a space, then at least five and at most twelve distinct uppercase letters. The last line will contain a target of zero and the letters END; this signals the end of the input. For each line output the Klein combination, break ties with lexicographic order, or 'no solution' if there is no correct combination. Use the exact format shown below."


Sample Input:


1 ABCDEFGHIJKL


11700519 ZAYEXIWOVU


3072997 SOUGHT


1234567 THEQUICKFROG


0 END


Sample Output:


LKEBA


YOXUZ


GHOST


no solution


解题思路:


先将字符串按照字典序去排序,然后根据题意:v-w^2+x^3-y^4+z^5=目标,五个for循环去寻找,找到满足题意的输出即可,如果找不到则输出no solution。


程序代码:


#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
char str[25];
bool cmp(char a,char b)
{
    return a>b;
}
int main()
{
    int a,b,c,d,e,ta,tb,tc,td,te,target,flag;
    while(scanf("%d %s",&target,str))
    {
        if(target==0)
            break;
        int len=strlen(str);
        flag=0;
        sort(str,str+len,cmp);
        for(a=0;a<len;a++)
        {
            for(b=0;b<len;b++)
            {
                if(a==b)
                    continue;
                for(c=0;c<len;c++)
                {
                    if(a==c||b==c)
                        continue;
                    for(d=0;d<len;d++)
                    {
                        if(a==d||b==d||c==d)
                            continue;
                        for(e=0;e<len;e++)
                        {
                            if(a==e||b==e||c==e||d==e)
                                continue;
                            ta=str[a]-'A'+1;
                            tb=str[b]-'A'+1;
                            tc=str[c]-'A'+1;
                            td=str[d]-'A'+1;
                            te=str[e]-'A'+1;
                            if(ta-tb*tb+tc*tc*tc-td*td*td*td+
                                te*te*te*te*te==target)
                            {
                                flag=1;
                                printf("%c%c%c%c%c\n",str[a],
                                    str[b],str[c],str[d],str[e]);
                                break;    
                            }
                        }
                        if(flag)
                            break;
                    }
                    if(flag)
                        break;
                }
                if(flag)
                    break;
            }
            if(flag)
                break;
        }
        if(flag==0)
            printf("no solution\n");
    }
    return 0;
}


相关文章
|
存储 缓存 算法
【数据结构查找算法篇】----散列查找【实战项目】
【数据结构查找算法篇】----散列查找【实战项目】
308 10
|
缓存 NoSQL 算法
110. Redis分布式锁如何解决锁超时问题?
110. Redis分布式锁如何解决锁超时问题?
631 1
110. Redis分布式锁如何解决锁超时问题?
|
传感器 编解码 监控
毕业设计 基于51单片机老人防跌倒GSM短信报警系统
毕业设计 基于51单片机老人防跌倒GSM短信报警系统
701 0
毕业设计 基于51单片机老人防跌倒GSM短信报警系统
|
数据采集 缓存 Java
电商项目之 flume 数据同步总结|学习笔记
快速学习电商项目之 flume 数据同步总结
|
4天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
7天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
8920 72
|
5天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
4099 9
|
6天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
4310 9
|
8天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
4681 13
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人