#include <stdio.h>
#include <string.h>
int main(){
char line[51];
int x[26] = {0};
int len, odd = 0;
char mid = 0;
scanf("%s", line);
len = strlen(line);
//사전식 배열을 만들기 위한 밑작업이다. 사전 순서대로 각 알파벳이 몇 번 들어가있는지 센다.
for (int i =0; i<len; i++){
x[line[i]-'A']++;
}
//홀수만 있는 숫자가 있는지 확인한다
for(int i =0; i<26; i++){
if(x[i]%2==1){
odd++;
mid = i + 'A';
}
}
//펠린드롬을 만들기가 불가능한 경우다
if (odd > 1) {
printf("I'm Sorry Hansoo\n");
return 0;
}
//사전순서대로 앞쪽을 출력한다
for (int i = 0; i<26; i++){
for(int j = 0; j<x[i]/2; j++){
printf("%c", i+'A');
}
}
//총 문자가 홀수일 때 가운데 알파벳을 출력한다
if (mid) printf("%c", mid);
//나머지를 출력한다
for(int i=25; i>=0; i--){
for(int j=0; j<x[i] /2; j++){
printf("%c", i+'A');
}
}
printf("\n");
return 0;
}
#include<stdio.h>
int main(){
//큰 숫자도 받을 수 있으므로 long long으로 변수형을 설정해준다
long long N, L, W, H;
scanf("%lld %lld %lld %lld", &N, &L, &W, &H);
double left = 0;
//right가 될 가장 큰 값을 찾는 삼항연산자이다. L, H, W 중에 가장 큰 값을 찾는다
double right = (L >W ? (L > H ? L : H) : (W > H ? W : H));
double mid;
//대략 100번 정도 시행하면 문제에서 말하는 값이 나온다고 한다. 100번보다 더 해도 된다
for (int i=0; i<100; i++){
mid = (left + right) /2.0;
//큰 상자에 몇 개가 들어갈 수 있을지를 num값에 넣는다
long long num = (long long)(L / mid) * (long long)(W / mid) * (long long)(H / mid);
//이진 탐색 부분이다
if (num >= N){
left = mid;
} else {
right = mid;
}
}
printf("%.10lf\n", left);
return 0;
}