| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
又一道大水题#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
bool compare(int x, int y){
return x>y;
}
int main() {
int n; string s;
while(1){
cin >> n >> s;
if(n == 0) break;
int gs = s.length();
int digit[14];
for(int i = 0; i < gs; i++){
digit[i] = s[i] - 'A' + 1;
}
sort(digit, digit+gs, compare);
bool used[14] = {0};
int rec[5];
int sum = 0;
bool ky = 0;
for(int i = 0; i < gs; i++){
used[i] = 1;
rec[0] = digit[i];
sum += digit[i];
for(int j = 0; j < gs; j++){
if(used[j]) continue;
used[j] = 1;
rec[1] = digit[j];
sum -= digit[j]*digit[j];
for(int k = 0; k < gs; k++){
if(used[k]) continue;
used[k] = 1;
rec[2] = digit[k];
sum += digit[k]*digit[k]*digit[k];
for(int l = 0; l < gs; l++){
if(used[l]) continue;
used[l] = 1;
rec[3] = digit[l];
sum -= digit[l]*digit[l]*digit[l]*digit[l];
for(int m = 0; m < gs; m++){
if(used[m]) continue;
sum += digit[m]*digit[m]*digit[m]*digit[m]*digit[m];
if(sum == n){
rec[4] = digit[m];
ky = 1;
goto done;
}
sum -= digit[m]*digit[m]*digit[m]*digit[m]*digit[m];
}
used[l] = 0;
sum += digit[l]*digit[l]*digit[l]*digit[l];
}
used[k] = 0;
sum -= digit[k]*digit[k]*digit[k];
}
used[j] = 0;
sum += digit[j]*digit[j];
}
used[i] = 0;
sum -= digit[i];
}
done:
if(ky){
for(int i = 0; i < 5; i++){
cout << (char)('A'-1+rec[i]);
}
}
else{
cout << "no solution";
}
cout << endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator