?? 1629.cpp
字號:
/* This Code is Submitted by wywcgs for Problem 1629 on 2006-03-11 at 01:49:15 */
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <functional>
using namespace std;
char word[16], path[8] = "";
int len, r;
bool vst[16];
bool enumer(int);
inline int pow(int, int);
int main()
{
while(scanf("%d %s", &r, word) != EOF && !(r == 0 && !strcmp(word, "END"))) {
len = strlen(word); memset(vst, false, sizeof(vst));
sort(word, word+len, greater<char>());
printf("%s\n", enumer(0) ? path : "no solution");
}
return 0;
}
bool enumer(int n)
{
int i;
if(n == 5) {
int d = 0;
for(i = 0; i < 5; i++)
d += pow(path[i]-'A'+1, i+1);
return (d == r);
} else {
for(i = 0; i < len; i++) {
if(vst[i]) continue;
path[n] = word[i]; vst[i] = true;
if(enumer(n+1)) return true;
vst[i] = false;
}
return false;
}
}
inline int pow(int b, int e)
{
int i, k = -1;
for(i = 0; i < e; i++) k *= -b;
return k;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -