ABC 세 이웃의 연령을 곱하면 2450, ABC 세 이웃의 합은 을의 두 배, ABC 세 이웃의 경갑은 모두 작아 다섯 사람의 나이를 구하는가?
갑은 50 세, 을은 32 세, A B C 는 각각 5,10,49 세입니다.
코드는 다음과 같습니다.
bool age:: mul (int a, int b, int c)
{<
}
bool age:: pls (int a, int b, int c)
{
}
voidage:: arth ()
{
typedefpage Int, 에이지 gt; Pair;;
int tmp, ave, hit;;
for (age _ t.a = 1; Age_t.alt;; = 2450; Age _ t.a++)
for (age _ t.b = 1; Age_t.blt;; = age _ t.a; Age _ t.b++)
for (age _ t.c = 1; Age_t.clt;; = age _ t.b; Age _ t.c++) {
if (mul (age _ t.a, age_t.b, age_t.c) amp; Amp;; Pls(age_t.a, age_t.b, age _ t.c)) {
ave = (age _ t.a.
m_age.insert(Pair(ave, age _ t));
}
}
m _ ITER = m _ age.begin ();
while (true) {
tmp = m _ age.count (m _ ITER-gt; First);
if (tmpgt; 1 | | m _ ITER = = m _ age.end ()) {
hit = m _ ITER-gt; First;;
break;
}
m _ ITER++;
}
for (m _ ITER = m _ age.begin ()); M_iter! = m _ age.end (); M _ ITER++) {
if (hit = = m _ ITER-gt; First) {
coutlt; Lt; "A may "lt;; Lt; M _ ITER-gt; Second.alt;; Lt; "예스 올드" lt; Lt; Endl;;
coutlt; Lt; "B may "lt;; Lt; M _ ITER-gt; Second.blt;; Lt; "예스 올드" lt; Lt; Endl;;
coutlt; Lt; "C may "lt;; Lt; M _ ITER-gt; Second.clt;; Lt; "예스 올드" lt; Lt; Endl;;
coutlt; Lt; "을 is" lt; Lt; M _ ITER-gt; Firstlt;; LT; " Years old"lt;; Lt; Endl;;
coutlt; Lt; Endl;;
}
}
}
실행 결과는 다음과 같습니다.
a mama
C may 7 years old
b is 32 years old
와 A B C 는 모두 갑보다 작기 때문에 갑이 50 세가 넘으면 위 두 결과가 불확실하다 그래서 갑은 반드시 50 세가 되어야 한다. 그러면 첫 번째 상황이 정확히 요구에 부합한다. 그래서 갑은 50 세, 을은 32 세, A B C 는 각각 5,10,49 세입니다.