杭电1015 落日映苍穹つ 2022-06-04 02:29 139阅读 0赞 # Safecracker # **Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4682 Accepted Submission(s): 2327** 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 //杭电1015 #include <iostream> #include <math.h> #include <cstring> #include <algorithm> using namespace std; char letters[13]; char result[6]; unsigned long target; bool cmp(const char &a,const char &b) { return (b-a)>=0?false:true; } int main() { while ((cin >> target >> letters) ) { if (target == 0 && !strcmp(letters, "END")) break; int len = strlen(letters); sort(letters, letters + len, cmp); bool find = false; int V,W,X,Y,Z; for (int v = 0 ; v < len ; ++ v) { V = letters[v] - 64; for (int w = 0; w < len ; ++ w) { if (w == v)continue; W = letters[w] - 64; for (int x = 0; x < len ; ++ x) { if (x == w || x == v)continue; X = letters[x] - 64; for (int y = 0; y < len ; ++ y) { if (y == x || y == w || y == v)continue; Y = letters[y] - 64; for (int z = 0; z < len; ++z) { if (z == y || z == x || z == w|| z == v) continue; Z = letters[z] - 64; unsigned long temp = V - W*W + X*X*X - Y*Y*Y*Y + Z*Z*Z*Z*Z; if (target == temp) { result[0] = letters[v]; result[1] = letters[w]; result[2] = letters[x]; result[3] = letters[y]; result[4] = letters[z]; result[5] = '\0'; find = true; break; } } if(find)break; } if (find)break; } if(find)break; } if (find)break; } if (find) cout << result[0] << result[1]<< result[2] << result[3]<<result[4]<<endl; else cout << "no solution" << endl; } return 0; }
相关 杭电1061 Rightmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J 布满荆棘的人生/ 2022年09月17日 05:27/ 0 赞/ 282 阅读
相关 杭电-1015Safecracker(DFS) Safecracker Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ 电玩女神/ 2022年08月09日 14:51/ 0 赞/ 110 阅读
相关 杭电1039 Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6553 一时失言乱红尘/ 2022年06月05日 12:48/ 0 赞/ 287 阅读
相关 杭电1026 Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6553 快来打我*/ 2022年06月04日 05:53/ 0 赞/ 306 阅读
相关 杭电1015 Safecracker Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3276 落日映苍穹つ/ 2022年06月04日 02:29/ 0 赞/ 140 阅读
相关 杭电oj Problem Title 1 Pro. ID 1000 A+B Problem include<stdio.h> int main() { £神魔★判官ぃ/ 2022年05月15日 16:14/ 0 赞/ 334 阅读
相关 杭电1060 此题是一道数学题,也是一道技巧题,也是不能直接算的,否则会超时的!!! 此题思路: 设n^n=d.xxxx\10^(k-1),其中k表示n^n的位数; d.xxxx 痛定思痛。/ 2021年12月01日 22:40/ 0 赞/ 326 阅读
相关 杭电2075 此题真的是简单的再不能简单了!呵呵!我一直纠结,出这样的题是什么意思呢?不懂!哎,不说那些废话了,直接 ac吧!呵呵! \include<iostream> using 今天药忘吃喽~/ 2021年12月01日 22:38/ 0 赞/ 311 阅读
相关 杭电2078 说实话,此题是一道有严重bug的问题,对于xhd没晚能复习的科目数m根本就没用上!!!哎不管那么些了,反正ac了!呵呵!此题这样想xhd得复习效率是前一课程和后一课程复习效率差 ╰+攻爆jí腚メ/ 2021年12月01日 22:38/ 0 赞/ 355 阅读
相关 杭电2090 此题就是一道令人无法琢磨的题!哎!!我简直就无语了!!呵呵!竟然能出这题。。。。 废话少说,直接ac!!! \\\ 此题要想输出结果,还需要注意一下! 在linux 约定不等于承诺〃/ 2021年12月01日 21:12/ 0 赞/ 369 阅读
还没有评论,来说两句吧...