Secondary 1 Maths Question
[Question]
Given the equation 28x +30y + 31z = 365 and that x, y, and z are natural
numbers. Can we predict the value of x + y + z? Discuss and show your
thinking.
[Anwser]
Natural number => integer number greater than 0
Determine the range for each variable
y=1,z=1 then x=10.85, 1 <= x <= 10
x=1,z=1 then y=10.20, 1 <= y <= 10
x=1,y=1 then z=9.90, 1 <= z <= 9
Rearrange equation
28x +30y + 31z = 365
28(x+y+z) + (2y+3z) = 365
x+y+z = [ 365 - (2y+3z) ] / 28
x+y+z has to be whole number
therefore 365-(2y+3z) has to be multiple of 28
Tabulate data
x+y+z 365-(2y+3z) (2y+3z) 5<=(2y+3z)<=47 10 280 85 Out of range 11 308 57 Out of range 12 336 29 OK 13 364 1 Out of range
ANSWER: x+y+z is 12
So, what is x, y, z.
Let's try the brute force methods in
AWK, BC, Perl, Ruby, SH, Tcl
Answer is given at the end of this blog.
awk ' END { for(x=1;x<=10;++x) { for(y=1;y<=10;++y) { for(z=1;z<=9;++z) { s=28*x+30*y+31*z if (s==365) { print x, "+", y, "+", z, "=", s; } } } } }' /dev/null# BC
for(x=1;x<=10;++x) { for(y=1;y<=10;++y) { for(z=1;z<=9;++z) { s=28*x+30*y+31*z if(s==365) { x "+" y "+" z "=" s } } } }# Perl
foreach $x (1..10) { foreach $y (1..10) { foreach $z (1..9) { $s=28*$x+30*$y+31*$z; if ( $s == 365 ) { print $x, "+", $y, "+", $z, "=", $s, "\n"; } } } }# Ruby
(1..10).each do |x| (1..10).each do |y| (1..9).each do |z| s=28*x+30*y+31*z if s==365 print x, "+", y, "+", z, "=", s, "\n" end end end end# SH, extremely slow
# # Works in Linux, Cygwin # if you do not have "seq" in your system, define this # seq() # { # awk 'END{for(i='$1';i<='$2';++i) {print i}}' /dev/null # } for x in `seq 1 10`; do for y in `seq 1 10`; do for z in `seq 1 9`; do s=`expr 28 \* $x + 30 \* $y + 31 \* $z` if [ $s -eq 365 ]; then echo "$x + $y + $z = $s" fi done done done# Tcl: Method 1
for { set x 1 } { $x <= 10 } { incr x } { for { set y 1 } { $y <= 10 } { incr y } { for { set z 1 } { $z <= 9 } { incr z } { set s [expr {28*$x + 30*$y + 31*$z}] if { $s == 365 } { puts "$x + $y + $z = $s" } } } }# Tcl: Method 2
foreach x {1 2 3 4 5 6 7 8 9 10} { foreach y {1 2 3 4 5 6 7 8 9 10} { foreach z {1 2 3 4 5 6 7 8 9} { set s [expr {28*$x + 30*$y + 31*$z}] if { $s == 365 } { puts "$x + $y + $z = $s" } } } }# Tcl: Method 3
set nine {1 2 3 4 5 6 7 8 9} set ten {1 2 3 4 5 6 7 8 9 10} foreach x $ten { foreach y $ten { foreach z $nine { set s [expr {28*$x + 30*$y + 31*$z}] if { $s == 365 } { puts "$x + $y + $z = $s" } } } }
[ANSWER]
x=1, y=4, z=7
x=2, y=1, z=9
0 Comments:
Post a Comment
<< Home