标签:clu 排列 约束 笔试 mat begin 实例 space 整数
题目:根据给定的"锁定密码"(一串数字),可以计算出"解锁秘钥",它是该数中数字的最小排列(数量上),且它不会从零开始.
输入:一串数字lockingKey,约束-100000<= lockingKey <= 100000
输出:返回一个表示解锁的整数
实例:
输入:
lockingKey = 706;
输出:
607
函数形式
long findUnlock(long lock)
{
}
参考程序:
1 #include <iostream> 2 #include <vector> 3 #include <string> 4 #include <algorithm> 5 #include <cmath> 6 using namespace std; 7 8 long findUnlock(long lock) 9 { 10 if (lock < 0) 11 { 12 lock = -lock; 13 } 14 string str; 15 str = to_string(lock); 16 vector<int> ivec; 17 int val; 18 for (int i = 0; i < str.size(); i++) 19 { 20 val = str[i] - ‘0‘; 21 ivec.push_back(val); 22 } 23 sort(ivec.begin(), ivec.end()); 24 int j; 25 if (ivec[0] == 0) 26 { 27 for (int i = 0; i < ivec.size(); i++) 28 { 29 if (ivec[i] != 0) 30 { 31 j = i; 32 break; 33 } 34 } 35 } 36 swap(ivec[0], ivec[j]); 37 long s = 0; 38 for (int i = 0; i < ivec.size(); i++) 39 { 40 s += pow(10, ivec.size() - i - 1)*ivec[i]; 41 } 42 return s; 43 } 44 45 int main() 46 { 47 cout << findUnlock(-83047) << endl; 48 return 0; 49 }
标签:clu 排列 约束 笔试 mat begin 实例 space 整数
原文地址:http://www.cnblogs.com/Stephen-Qin/p/7429793.html