FLORIDA HIGH SCHOOLS COMPUTING COMPETITION '85
1.1 Write a program to place numbers on a stack with the options
of retrieving from or adding to the stack. A Stack is a Last In--
First Out (LIFO) type of storing. The user may enter one of three
commands: ADD to the stack; TAKE from the stack; or QUIT. If ADD
is entered, then the program accepts a value to place on the
stack. If TAKE is entered, then the last value placed on the
stack is removed and displayed. If QUIT is entered, then the
program ends. Example:
INPUT: Enter command: ADD
Enter number: 80
Enter command: ADD
Enter number: 45
Enter command: ADD
Enter number: 98
Enter command: TAKE
OUTPUT: 98
INPUT: Enter command: TAKE
OUTPUT: 45
INPUT: Enter command: QUIT
OUTPUT: (program ends)
1.2 A teacher writes a set of N consecutive positive integers
beginning with 1 on a blackboard. The teacher then erases one of
the numbers. Write a program to find the number that was erased
if the average of the remaining integers is AV, where N and AV are
given as input. Example:
INPUT: Enter N, AV: 11, 4.7
OUTPUT: NUMBER ERASED WAS 9
1.3 Write a program to round the square root of a given number at
a designated place value and then to sum the digits in the rounded
number. The program will accept as input a whole number, N, and
an integer between 3 and -4 inclusive for the exponent of the
power of 10, D. Let S equal the square root of N rounded to the
nearest 10^D, and then display the number S in the form
S=####.#### and display the sum of all the digits of S next to the
phrase "SUM=". Examples:
INPUT: Enter N, D: 2, -3
OUTPUT: S= 1.4140
SUM=10
INPUT: Enter N, D: 625, 1
OUTPUT: S= 30.0000
SUM=3
1.4 The year is 1985. As the U.S.S. RETUPMOC spacecraft whirls
through space, Captain James T. Irk notices that the time dial is
malfunctioning and is increasing the year every second. He then
notices that the years are steadily counting faster and faster.
The next thing that he realizes is that the spacecraft has crashed
and the time dial reads 2345. Write a program to simulate the
behavior of the time dial, displaying the year in the center of
the screen. Beginning with the year 1985, increase the count by
one year approximately every second for several seconds, and then
begin to steadily and rapidly increase the years with less time
between each succeeding display until it is counting faster than
the eye can comprehend, ending with the year 2345, which remains
on the screen. The displays should not flicker. The program
should take less than 60 seconds to run.
1.5 In a Tennis tournament there are N number of participants.
In the first round there are N/2 or (N-1)/2 games depending on
whether N is even or odd respectively. If N is odd then there
must be one bye. A bye allows a player to proceed to the second
round without playing in the first round. For successive rounds,
the number of players is equal to the number of games and byes in
the previous round. Write a program that will prompt the user for
the number of participants, N, between 2 and 99 inclusive, and
will then calculate the number of games and byes starting at the
initial round through the final round. For each round and the
grand total, print the number of games and byes in the format
shown below. Example:
INPUT: Enter N: 27
OUTPUT: ROUND 1 13 GAMES 1 BYE
ROUND 2 7 GAMES
ROUND 3 3 GAMES 1 BYE
ROUND 4 2 GAMES
ROUND 5 1 GAMES
TOTAL 26 GAMES 2 BYES
1.6 Write a program to find the smallest, the largest, and the
sum of all 3-digit numbers, whose 3 digits are non-zero and
distinct, between N and M inclusive, where N and M are input as
positive integers with N being less than M. Example:
INPUT: Enter N, M: 90, 125
OUTPUT: SMALLEST = 123
LARGEST = 125
SUM = 372
1.7 Bob Simon of Bob's Cycle Shop wants to improve his billing
procedure and decides that a computer program that would calculate
values for an invoice and then prints the invoice would be very
helpful. Write a program for Bob! Allow him to input the
customer's name, product number of part sold, and labor time in
hours. Bob charges $10 per hour for labor. The program must
prepare an invoice on the screen with the following information:
customer name, part # and description, part cost, labor cost,
invoice total including 5% sales tax on part cost, rounded to the
nearest penny. All amounts must be displaye in the form ###.## as
shown below. Bob has seven parts that are to be used in this
program.
Part# Description Cost
==============================================
S193 10 INCH SPROCKET 13.95
S867 30 INCH CHAIN 27.50
F234 BLITZ MAG FRAME 119.00
S445 COMPUTCYCLE COMPUTER 33.95
C492 JET BRAKE SET 29.98
J273 27 INCH WHEEL 32.00
T100 27X1 INCH TIRE TUBE 12.50
Example:
INPUT: Enter name: CRAIG
Enter part#: F234
Enter time: 10.5
OUTPUT: CUSTOMER NAME: CRAIG
PART #: F234
DESCRIPTION: BLITZ MAG FRAME
PART COST: 119.00
LABOR COST: 105.00
5% TAX: 5.95
TOTAL: 229.95
INPUT: Enter name: BARBARA
Enter part#: S193
Enter time: 4
OUTPUT: CUSTOMER NAME: BARBARA
PART #: S193
DESCRIPTION: 10 INCH SPROCKET
PART COST: 13.95
LABOR COST: 40.00
5% TAX: 0.70
TOTAL: 54.65
1.8 Write a program that will prepare a set of labels (on the
screen of course), given the number of lines on the label as input
(between 3 and 5 inclusive). Each label will have blanks on the
first line, the individual's name (last name first, comma and
space then first name) on the second line, and the telephone
number on the third line. The following names are to be stored in
the program either in DATA statements or in arrays:
DATA LISA SPINXS, 987-6543
DATA BOB SIMON, 923-4455
DATA BILL SIMON, 123-4567
DATA HARRY TROUTMAN, 876-2174
DATA HARRY PARKER, 222-3333
DATA *END*, 0
DATA or array statements will be terminated by "*END*, 0". The
program will then alphabetically sort the entries on the basis of
last name, then first name. After printing the first three lines
of the label, the program is to skip the appropriate number of
lines before printing the next label. Example:
INPUT: Enter # of lines on label: 5
OUTPUT:
PARKER, HARRY
222-3333
SIMON, BILL
123-4567
SIMON, BOB
123-4455
SPINXS, LISA
987-6543
TROUTMAN, HARRY
876-2174
1.9 Write a program that will randomly generate a 5x5 matrix of
25 letters, A through Y, centered on the top part of the screen,
with every adjacent letter on a row separated by a space. Allow
the user to think of a secret letter. The computer must ask the
user yes(Y)-or-no(N) questions to logically determine the secret
letter (using similar questions as shown in the examples). The
computer will start with a score of 11 points and will deduct 1
point for each question that is asked and answered. Display the
score in the upper right corner after each question is asked. If
the program does not determine the letter before the computer
score reaches 0, then no credit is awarded at this time (try
again). Possible examples:
RUN PROGRAM:
OUTPUT: Q W E R T SCORE=11
Y U I O P
A S D F G
H J K L M
X C V B N
OUTPUT/INPUT: IS THE LETTER IN ROW 1? N
OUTPUT: (The score decreases to 10 at the top right)
OUTPUT/INPUT: IS THE LETTER IN ROW 2? Y
OUTPUT: (The score decreases to 9)
OUTPUT/INPUT: IS THE LETTER IN COL 1? N
OUTPUT: (The score decreases to 8)
OUTPUT/INPUT: IS THE LETTER IN COL 2? Y
OUTPUT: (The score decreases to 7)
YOUR LETTER IS U
RUN PROGRAM:
OUTPUT: X C V B N SCORE=11
M L K J H
A S D F G
P O I U Y
T R E W Q
OUTPUT/INPUT: IS THE LETTER IN ROW 1? N
OUTPUT: (The score decreases to 10 at the top right)
OUTPUT/INPUT: IS THE LETTER IN ROW 2? N
OUTPUT: (The score decreases to 9)
OUTPUT/INPUT: IS THE LETTER IN ROW 2? Y
OUTPUT: (The score decreases to 8)
OUTPUT/INPUT: IS THE LETTER IN COL 1? N
OUTPUT: (The score decreases to 7)
OUTPUT/INPUT: IS THE LETTER IN COL 2? Y
OUTPUT: (The score decreases to 6)
YOUR LETTER IS S
1.10 Write a program that will allow the user to locate the
cursor on the screen by using the keys I,J,K, and L to move up,
left, right, and down respectively. Upon pressing 1,2,3, or 4, a
square is drawn relative to the cursor's position, if possible, as
shown below, using the # symbol to designate the cursor.
# #
********* ********* ********* *********
* * * * * * * *
* 1 * * 2 * * 3 * * 4 *
* * * * * * * *
********* ********* ********* *********
# #
If the picture would print off the screen, then display the error
message "OFF THE SCREEN" instead. Examples:
RUN PROGRAM: Press the appropriate keys I,J,K,M to place the
cursor in the center of the screen.
INPUT: 1
OUTPUT: The box below with respect to the cursor (#):
#
*********
* *
* 1 *
* *
*********
RUN PROGRAM: Place the cursor in the center of the screen.
INPUT: 3
OUTPUT: *********
* *
* 3 *
* *
*********
#
RUN PROGRAM: Place the cursor at the absolute right side of the
screen.
INPUT: 4
OUTPUT: OFF THE SCREEN
RUN PROGRAM: Place the cursor at the bottom of the screen.
INPUT: 2
OUTPUT: OFF THE SCREEN
2.1 Write a program to outline the border of the screen with a
random letter; then when the space bar is pressed, the inside
border of the new screen will be outlined by a random letter;
afterwards, when the space bar is pressed, the inside border of
the new screen will be outlined by a random letter, and so on.
Continue drawing these rectangles until the whole screen is
filled, then press the space bar once again and the screen will
clear and start over with a new outer border. A miniature sample
run would look like this:
RRRRRRRRRRR RRRRRRRRRRR RRRRRRRRRRR
R R RQQQQQQQQQR RQQQQQQQQQR
R R RQ QR RQYYYYYYYQR
R R RQ QR RQYYYYYYYQR
R R RQQQQQQQQQR RQQQQQQQQQR
RRRRRRRRRRR RRRRRRRRRRR RRRRRRRRRRR
2.2 Write a program to find and print the longest sequence of
letters in alphabetical order in a set of N letters entered one at
a time. If two or more sequences tie for the longest, then print
each of the sequences on successive lines. Each letter must be
separated by a space. If a letter repeats, such as the letter "D"
in the series of letters A,B,C,D,D,E, then the first sequence is
considered to end at the first "D" and the second sequence begins
at the second "D". Example:
INPUT: Enter N: 5
Enter letter: J
Enter letter: E
Enter letter: S
Enter letter: S
Enter letter: U
OUTPUT: E S
S U
INPUT: Enter N: 7
Enter letter: S
Enter letter: I
Enter letter: S
Enter letter: L
Enter letter: O
Enter letter: R
Enter letter: D
OUTPUT: L O R
2.3 Write a program to simulate a word processor: Allow the
program to accept as input a paragraph (one string with no leading
spaces and no more than 127 characters in length) and to print the
words out on the screen providing a 5-character left margin and no
more than 30 characters on a line. Do not split up words. A word
is defined as a set of characters in between two spaces (except
for the first and last words of the string). The first word of
the paragraph is to be indented 5 spaces. The last word of a
sentence is followed by a period and 2 spaces (as input), except
for the last word of the paragraph which is followed by just a
period. New sentences beginning at the left margin are not to be
indented by the trailing spaces of the previous sentence.
Example:
INPUT: Enter text: DO NOT SPLIT UP WORDS. THE FIRST WORD OF
THE PARAGRAPH IS TO BE INDENTED 5 SPACES.
OUTPUT: DO NOT SPLIT UP WORDS.
THE FIRST WORD OF THE
PARAGRAPH IS TO BE INDENTED 5
SPACES.
2.4 Write a program to accept a word as input and print the word
with its consonants alphabetized and placed back into the
consonant positions, and likewise have the vowels alphabetized and
placed back into the vowel positions. Example:
INPUT: Enter word: ELEPHANT
OUTPUT: AHELNEPT
2.5 Write a program that will accept at most 9 words, each having
at most 10 characters, and then will check the words for common
letters and print those letters that are occur in all the words.
The program is to allow the user to choose one of the common
letters, then the program is to arrange the words in a list so
that the FIRST common letter appears in the same column. If there
are no common letters then print the message: NO COMMON LETTERS.
Examples:
INPUT: Enter number of words: 3
Enter word: BROTHER
Enter word: MOTHER
Enter word: TUTOR
OUTPUT: O R T
INPUT: Choose letter: T
OUTPUT: BROTHER
MOTHER
TUTOR
INPUT: Enter number of words: 2
Enter word: MOM
Enter word: DAD
OUTPUT: NO COMMON LETTERS
2.6 Three local cross country teams compete in a double dual
race. Each team consists of seven runners, but only the first
five finishers of a team contribute to that team's score. As the
runners cross the finish line, gasping for breath, the judge
writes the INITIAL of the runner's team name and the NUMBER
indicating the runner's finishing position, e.g. 1 for 1st, 2 for
2nd and so on. To find the score for teams A and B and to decide
which of the two wins, the scorekeeper temporarily eliminates all
of C's positions, and then repositions the runners from A and B
into places 1 through 14. The team's score consists of the sum of
the places of their first five runners. The lower team score
wins. If there is a tie then the team whose sixth runner crossed
the finish line first is the winner.
Write a program that computes the score for each pair of three
teams and determines the winner of each pair. The program must
allow the user to assign all 21 runners' team INITIAL to finishing
places. Team initials can be any letter in the alphabet.
Example:
INPUT: Place 1: A | Example of
Place 2: B | repositioning
Place 3: A | teams A and B:
Place 4: B |
Place 5: A | 1: A
Place 6: B | 2: B
Place 7: C | 3: A
Place 8: C | 4: B
Place 9: C | 5: A
Place 10: C | 6: B
Place 11: B | 7: B
Place 12: A | 8: A
Place 13: C | 9: B
Place 14: B | 10: B
Place 15: C | 11: A
Place 16: B | 12: A
Place 17: A | 13: B
Place 18: A | 14: A
Place 19: C
Place 20: B
Place 21: A
OUTPUT: (in any order)
TEAM A: 28 POINTS
TEAM B: 28 POINTS
TEAM B WINS!
TEAM A: 25 POINTS
TEAM C: 31 POINTS
TEAM A WINS!
TEAM B: 24 POINTS
TEAM C: 31 POINTS
TEAM B WINS!
2.7 Write a program that will make it easy to manipulate tables
of numerical data with at most 4 digits and one decimal point.
The program must first initialize a 3x3 array with the data shown
in the example below. The array will be displayed as a table
consisting of three rows with three items in each row. Complete
the table so that sums of the rows are found in a fourth column
and sums of the columns are found in the fourth row. After the
initial table is loaded, the program must display the following
menu:
A. EDIT OR CHANGE A VALUE
B. DISPLAY THE RESULTS
C. QUIT
If option (A) is chosen, the user will enter the row and column to
be changed, then the new value. The program then returns to the
menu upon hitting a key. If option (B) is chosen, the table will
be displayed; Both the numbers and the sums are to be displayed in
the form ###.## and separated from each other by two spaces. The
program then returns to the menu upon hitting a key. If option
(C) is chosen, the program will terminate. Example:
RUN PROGRAM:
OUTPUT: A. EDIT OR CHANGE A VALUE
B. DISPLAY THE RESULTS
C. QUIT
INPUT: Enter option: B
OUTPUT: 10.11 20.22 30.33 60.66
11.10 22.20 33.30 66.60
10.00 20.00 30.00 60.00
31.21 62.42 93.63 187.26
INPUT: (press any key)
OUTPUT: A. EDIT OR CHANGE A VALUE
B. DISPLAY THE RESULTS
C. QUIT
INPUT: Enter option: A
Enter row, col: 1, 2
Enter number: 60.55
INPUT: (press any key)
OUTPUT: A. EDIT OR CHANGE A VALUE
B. DISPLAY THE RESULTS
C. QUIT
INPUT: Enter option: B
OUTPUT: 10.11 60.55 30.33 100.99
11.10 22.20 33.30 66.60
10.00 20.00 30.00 60.00
31.21 102.75 93.63 227.59
INPUT: (press any key)
OUTPUT: A. EDIT OR CHANGE A VALUE
B. DISPLAY THE RESULTS
C. QUIT
INPUT: Enter option: C
OUTPUT: (program terminates)
2.8 Write a program that checks all combinations of four
different whole numbers between 0 and 9 inclusive to see if the
product of any two can be expressed as a 2-digit numeral using the
other two numbers as digits. The program must print the
combinations for which the condition holds true along with the
illustration. Each set must be displayed with its elements in the
following order: smaller multiplicand, larger multiplicand, digits
of product. Amongst the other sets, each set must be displayed in
ascending order when considering the smaller and larger
multiplicands together. In the example below, set 2,5,1,0 comes
before 2,7,1,4 because 25 comes before 27. Similarly, 27 comes
before 28 in the set 2,8,1,6. A final total must also be
displayed in the form shown below. Partial example:
RUN PROGRAM:
OUTPUT: 2 5 1 0 2 X 5 = 10
2 7 1 4 2 X 7 = 14
2 8 1 6 2 X 8 = 16
: : : : : :
: : : : : :
8 9 7 2 8 X 9 = 72
TOTAL = ##
2.9 Write a program to accept N words, after N is input as a
number less than 15, and then to accept a word with a wildcard,
"*". The wildcard could come before, after, or in between the
letters of the word. Your program must then display all words
that were input that match the format of the wildcard expression,
where the wildcard could represent 0 to 10 letters. All words are
displayed in the order in which they were input. If no words are
found then display the message "NO WORDS FOUND". The program is
to continue to accept as input a wildcard word until a word is
entered without a wildcard. Example:
INPUT: Enter N: 3
Enter word: RUN
Enter word: RUNNING
Enter word: RUNS
Enter string: RUN*
OUTPUT: RUN
RUNNING
RUNS
INPUT: Enter string: *UN
OUTPUT: RUN
INPUT: Enter string: R*N
OUTPUT: RUN
INPUT: Enter string: *INGS
OUTPUT: NO WORDS FOUND
INPUT: Enter string: END
OUTPUT: (program terminates)
2.10 A particular building has three major sections, an office
section, a computer section, and a dry storage section. Each
section's temperature is controlled by a central processing unit
for different maximums and minimums as set by a section's
thermostat. Heat is generated in the office section so that the
temperature rises at a rate of .1 degree Fahrenheit (F) every 15
seconds. Heat is generated at the rate of .2(F) every 15 seconds
in the computer room. The rate in dry storage is .1(F) every
minute. The central air conditioning unit has the capacity to
cool any one section at the rate of .1(F) every 3 seconds if no
heat is being generated. If 2 sections are being cooled the air
conditioner will cool at the rate of .1(F) every 6 seconds and for
all 3 sections the rate is .1(F) every 9 seconds.
Write a program for the controller that will monitor the
temperatures in each section every 15 seconds, alert the
controller to turn air conditioning off or on in a section when
necessary and will print a status report every 5 minutes or when
the air conditioner is turned off or on in any section. The
status report must include the sections that the air conditioning
is turned off or on (denoted by 0 or 1 respectively), the
temperature in each room (rounded to the nearest tenth of a
degree), and the time of the status report (of the form
Minutes:Seconds). Assume that heat is being generated at the same
time that a section is being cooled. Initialize the program with
minimum temperatures for each section and the air conditioning
off. Air conditioning is changed (turned on or off) when it
exceeds or precedes its maximum or minimum temperature
respectively during a certain interval of time. For example if
the computer room reads 64.8(F) and the air conditioning is
currently off, then a message should not be displayed to turn the
air conditioning off again for that section if the temperature
reads 64.9(F) fifteen seconds later. The program ends when it
reaches the last 5-minute interval, entered by the user.
Minimum and Maximum Acceptable Temperatures
Office 72.0F to 78.0F
Computer Rm 65.0F to 70.0F
Dry Storage 79.0F to 85.0F
Example:
INPUT: Enter last 5-minutes: 30
OUTPUT: OF CO DS OFFICE COMP. DRY. MIN:SEC
0 0 0 72.0 65.0 79.0 0:00
0 0 0 74.0 69.0 79.5 5:00
0 1 0 74.6 70.2 79.7 6:30
0 1 0 76.0 66.0 80.0 10:00
0 0 0 76.4 64.8 80.1 11:00
0 0 0 78.0 68.0 80.5 15:00
1 0 0 78.1 68.2 80.5 15:15
1 1 0 74.1 70.2 80.8 17:45
1 1 0 72.7 69.7 81.0 20:00
0 1 0 72.0 69.5 81.1 21:15
0 0 0 73.5 65.0 81.5 25:00
0 0 0 75.5 69.0 82.0 30:00
3.1 A standard six sided die has a 1 on the opposite side of the
6, and a 5 on the opposite side of the 2. When the 1 is on the
top and the 5 is in front, the 4 is on the right side, and the 3
is on the left side. Write a program that, accepts as input, the
numbers on the top and front sides of the die and prints out the
numbers on all six sides of the die clearly labeled. Example:
INPUT: Enter top, front: 1, 3
OUTPUT: TOP=1 FRONT=3 RIGHT=5
BACK=4 LEFT=2 BOTTOM=6
3.2 Write a program to factor a quadratic equation with integral
coefficients and rational roots. Input will be A,B,C of
Ax^2+Bx+C, where A is greater than 0 and C is not equal to 0.
Output should be of this form: Q(Rx+S)(Tx+U), where Q,R,S,T, and
U are integers and R,Q are positive. For example 4x^2+2x-12
should yield 2(x+2)(2x-3) or 2(2x-3)(x+2), order does not matter.
Note that R=1 is omitted and that there is a '-' sign instead of
'+-'. If Q=1 then Q must not be printed. If the quadratic
equation cannot be factored then display the message: CANNOT BE
FACTORED.
INPUT: Enter A, B, C: 30, 4, -2
OUTPUT: 2(5X-1)(3X+1)
INPUT: Enter A, B, C: 2, 4, 6
OUTPUT: CANNOT BE FACTORED
3.3 Write a program to simulate a calculator. Input will be a
mathematical expression using whole numbers (less than 1000) and
the symbols +,-,*,/. By following the rules of algebraic order,
compute the numerical value of the expression and display it in
the form ###.###. Examples:
INPUT: Enter expression: 3+4*2-15
OUTPUT: -4.000
INPUT: Enter expression: 250*4-50*5+100/3
OUTPUT: 783.333
3.4 Write a program to print out all the digits of N factorial
(N!), once given N as a whole number less than 50. The output
displayed must contain all the digits in the resulting factorial
number and not an abbreviated form using exponential notation
(i.e. 2.432902E+18).
INPUT: Enter N: 20
OUTPUT: 2432902008176640000
3.5 Write a program that will print the sum and difference
(clearly labeled) of any two positive decimal numbers of up to 30
digits each with the decimal point between any two of the digits.
Since the first number input will be numerically larger than the
second number input, the difference output will always be
positive. Example:
INPUT: Enter #1: 987654321.123456789
Enter #2: 123456789.987654321
OUTPUT: SUM = 1111111111.111111110
DIFFERENCE = 864197531.135802468
3.6 Write a program to print a snake (a trail of 30 asterisks
'*') centered on the screen. Upon hitting appropriate keys (like
I,J,K,M or something similar), the snake's head moves in the
appropriate direction while the rest of the snake slithers along
the same right angle paths. The snake is to move CONTINUOUSLY in
the designated direction UNTIL a new directional key is hit. The
snake will be 30 asterisks long throughout the entire run; Do not
leave a sketched path. The snake cannot go backwards, e.g. if it
is going to the right its next direction cannot be to the left.
The snake continues moving until it runs into itself or it runs
off the screen or a non-directional key is pressed.
3.7 Write an EFFICIENT program to accept as input a word with at
most 7 distinct letters and a positive integer K. Your program is
to print out the Kth, 2*Kth, and 3*Kth elements of the
alphabetized list of all the permutations of the word. For
example if the word CAT is entered with K=2 then the computer
would form the list ACT, ATC, CAT, CTA, TAC, TCA, and output would
be: ATC, CTA, TCA. Example:
INPUT: Enter word: CAT
Enter K: 2
OUTPUT: ATC CTA TCA
3.8 Suppose you had a playing board with N rows with N squares in
each row. You are to place pennies on the squares so that each
row, column, and main diagonal has at most one penny. Write a
program that will accept as input a positive number N, between 3
and 14 inclusive, and will print the largest possible number of
pennies that can be placed on the board. The program also prints
one of many solutions to the puzzle, displaying the units digit of
the N numbers horizontally, each separated by a space, and the
units digit for the N numbers vertically; Place an asterisk in
the position where a penny can be placed and display the
coordinates of each penny to the right with the sum of the
coordinates. Examples:
INPUT: Enter N: 3
OUTPUT: TOTAL = 3
1 2 3
1 * (1,1) SUM = 2
2 * (2,3) SUM = 5
3 * (3,2) SUM = 5
INPUT: Enter N: 4
OUTPUT: TOTAL = 4
1 2 3 4
1 * (1,2) SUM = 3
2 * (2,4) SUM = 6
3 * (3,1) SUM = 4
4 * (4,3) SUM = 7
3.9 Write a program to determine the minimum number of moves
required to move a stack of N blocks having graduated sizes to one
of two alternate locations. (There are three locations all
together.) N will be input as a positive integer less than 16.
When moving blocks, you can only move one block at a time and you
cannot stack a larger block on a smaller block. When finished,
the blocks in the new stack will be in the same order as they were
in the beginning. Your program could be written in a very few
program lines if you can develop an algorithm for determining the
required number of moves. For example, the following 7 moves
will transfer the three graduated blocks from one location (-) to
one of two other locations (- -); The blocks are designated by
the numerical values 3, 2, and 1, which represent the magnitude of
the block:
1 1
2 2 1 1 2 2
3 3 1 3 1 2 3 2 3 2 1 3 2 1 3 3
- - - - - - - - - - - - - - - - - - - - - - - -
Example:
INPUT: Enter N: 3
OUTPUT: 7
3.10 Write a program that will find the set of numbers P,Q,R,
where the following conditions hold:
1. Q is a 2-digit number and R is a 3-digit number.
2. P is a 5-digit number that is the product of Q and R.
3. Each of the digits 0-9 is found exactly once in the
number sentence P=QxR.
4. Q is as small as possible but greater than S, where S is a
2-digit number input.
Examples:
INPUT: Enter S: 44
OUTPUT: P = 17820 Q = 45 R = 396
INPUT: Enter S: 52
OUTPUT: P = 16038 Q = 54 R = 297