There are two
friends,
S and
P.
And there are two
integer numbers, K and L :
1 < K, L <
100
"S" knows
only the sum of those two numbers and "P" knows
only the product.
Here is their little
discussion...
P: I do not know the numbers...
S: I knew that you didn't know them. I do not know them either.
P: But now I know them!
S: Now, I know them too!
Which are the two numbers K, L ?
Incredible though it may seem, this is
no joke.
It has an
absolutely straight answer (like, say,
the numbers K, L are 17 and 51), and a
proof which, either can contain
maths, either just be
brute-force.
We, as good
computer-
geeks, will
approach the
quiz with
brute-force
:-)
But, really, before you take a look at the
solution you should give
it a try!
Anyway, here we go.
P says: I do not know the numbers.
So, we can be sure that the product that P knows, can be
analysed in
more than one way. We name such a product a "
fuzzy product".
Here is an example ( P = 50 = 5 * 10 = 2 * 25). P can't really know whether
5, 10 or 2, 25 are the numbers K, L. But if P was 55, then the numbers K,
L would
definately be 5, 11.
S says: I knew that you didn't know them. I do not know them either.
From the first
part of S's answer, we understand that S has such a
sum
that
every possible K, L pair corresponding to this sum gives a fuzzy
product.
And here I shall invoke The
Computer!
Don't be
frightened! I wrote this
small (20 lines pure
C) program to do da dirty job!
#include <stdio.h>
int fuzzy(int x){ // Determines if x is a fuzzy product
int i,j,s=0;
for(i=2;i < 100;i++)
for(j=2;j < 100;j++)
if (x == i*j) s++;
return s > 2; // because we must consider that pairs 5, 11 and 11, 5 are
} // considered the same pair
int main(){
int sum,x,tmp;
printf("Good Sums : ");
for(sum=4;sum <= 198;sum++){ // since K, L are between 2 and 99 ...
x=2;
while ((tmp=fuzzy(x*(sum -x))) && (x = x+1) && (x+1 < sum));
if (tmp) printf("%d, ",sum);
}
printf("\n");
return 0;
}
==> Program Ends Here <==
And the long-awaited
output is...
Good Sums : 11, 17, 23, 27, 29, 35, 37, 41, 47, 53
(So, OK, I cheated, I ate up the last comma manually!)
So, let's name those sums that have only fuzzy product solutions,
good
sums.
One example to make that more clear: If you take any of the above sums,
and check all possible combinations which yield that sum, you will find out
that all of them have a fuzzy product.
11 = 2+9 = 3+8 = 4+7 = 5+6
- 2*9 = 18 = 3*6 (so, 18 is fuzzy)
- 3*8 = 24 = 4*6 (so, 24 is fuzzy)
- 4*7 = 28 = 2*14 (so, 28 is fuzzy), and...
- 5*6 = 30 = 2*15 (so, 30 is fuzzy), thus, all combinations for 11
give fuzzy products.
So, it is now obvious that S has one of the above 10 sums, or else he wouldn't
be
sure that P has a fuzzy number, and thus wouldn't have said that
"I
knew that you did not know them".
P says: But now I know them!
FGS! (
For God's Sake) How did P found those numbers?!
Well, when P heard S saying that he (S) knew that he (P) didn't know the
numbers in the first place, he made the
calculations above and found out
that S had one of those 10 sums(which produce
only fuzzy products).
But thou shall not forget that P, being P, knows P :-) (the product)
So, P knows P and those 10
possible sums. Hence, the only thing he can
do now is to
solve those 10
equation systems with 2
unknowns and
2 equations and hope that
only one of those equation systems
has a
valid solution.
{ K + L = S
{ K * L = P
with S = {11, 17, 23, 27, 29, 35, 37, 41, 47, 53}
and P known (to our friend P)
But we know from P's answer that he found the numbers, and that means one
thing:
only one of those equation systems has a
valid
solution.
S says: Now, I know them too!
Of course, S does not have the
privilege to know the product P. The only
thing that he knows (except from S :-) are the ten equation systems from
which P found the numbers.
CAUTION: For the
skeptics: if you intend to ask, how he (S) knew
the ten equation systems, just think that if we, the
readers, could think
of them, S could also do it.
Now that the two math
geniuses S, P learned the numbers, it is right
time that we, the readers, learn them too.
From the fact that his friend P
could find the numbers, he draws
the
conclusion that only one of those equation systems has a valid solution.
So, S is dying to find the product P, which, by the way, let's name "
rare
product" implying that it has the following
property:
only one
of all pairs of numbers which have this product, has a good
sum. If this
sounds complicated, read until
clear.
But S says that he found out the numbers. That can only mean that he has
a sum that of all possible pairs which yield that sum,
only one has
a rare product.
What is therefore left for us, the readers, is to check all of the 10 possible
sums to find the one that has a
unique pair of numbers which give a rare
product.
This is what the next piece of C code does:
#include <stdio.h>
int good_sums[]={11, 17, 23, 27, 29, 35, 37, 41, 47, 53};
int fuzzy(int x){ // determines the fuzziness of x
int i,j,s=0;
for(i=2;i < 100;i++)
for(j=2;j < 100;j++)
if (x == i*j) s++;
return s > 2;
}
int is_it_a_good_sum(int sum){ // determines the goodness :-) of a "sum"
int i=0;
while( (good_sums[i] != sum ) && (i++ < 10) );
return i < 10;
}
int rare(int G){ // determines if G is a rare product
int i,j,s=0;
for(i=2;i <= 99;i++)
for(j=2;j <= 99;j++)
if (G == i*j)
if (fuzzy(G))
if (is_it_a_good_sum(i+j))
s++;
return s == 2;
}
int main(){
int i,x,one,tmp;
for(i=0;i < 10;i++){
x=2;
one=0;
do{
one += rare(x*(good_sums[i]-x)); // this is the kind of code you have written
if (rare(x*(good_sums[i]-x))) tmp=x;
x++; // a week before and now you see it again &
}while (x+1 < good_sums[i]); // you say: did I write that?! Am I an artist or what? :-)
if (one == 2) printf("SUM = %d\n",good_sums[i]);
if (one == 2) printf("PRODUCT = %d\n",tmp*(good_sums[i]-tmp));
}
return 0;
}
==> Program Ends Here <==
We are then presented with a humble:
SUM = 17
PRODUCT = 52
which reassures us that 17 is the one and only of all the 10 possible sums
that of all pairs of numbers which sum to it (e.g. 5, 12 or 8, 9) only one
has a rare product, i.e. a product which of all pairs of numbers which have
that product only one has a good sum, i.e. a sum which all pairs of numbers
which sum to it have fuzzy products. Oh,
God, I said it...
So which numbers have a product of 52 and a sum of 17?
They are 4 and 13...
That's all folks, I hope you had a nice time!