AP CSA 2.12 FRQ Practice: Counting the Work

Unit 2: Selection and Iteration · Lesson 2.12 · FRQ Practice

Counting the Work

A free response question in the shape the exam uses: a stated contract, four rubric parts, and no main method handed to you. Worth 4 points.

Why this question is worth four points

Run-time analysis on this exam is literal: how many times does the statement inside the loop actually execute? Rather than asking for a name like "quadratic", this question asks you to COUNT, which is the same skill without the vocabulary in the way, and it is checkable.

What you are given

Nothing is given. Write a class named Work containing exactly the four static methods described below. Assume n is at least 0. Do not write a main method.

The question

  1. (a) public static int singleLoop(int n) returns how many times the body of a loop running i from 0 while i < n executes.
  2. (b) public static int nestedLoop(int n) returns how many times the inner body executes when both loops run from 0 while less than n.
  3. (c) public static int triangleLoop(int n) returns how many times the inner body executes when the inner loop starts at i + 1 and runs while less than n.
  4. (d) public static int halvingLoop(int n) returns how many times the body executes when the counter starts at n and is halved by integer division until it reaches 0.

What the reader is looking for

  1. Write class Work with the four static methods exactly as described. No main method.
  2. Write the loops and count, rather than reasoning out a formula. The point of this lesson is that the count is something you can determine exactly.
  3. Part (d) must terminate. Halving by integer division reaches 0 from any starting value, but only if the counter actually changes on every pass.

Worked examples

These show what a correct answer prints. There are more cases you cannot see, and they use different values, so an answer built around just these numbers will fail.

Example 1 input
4
Example 1 output
4
16
6
3
Example 2 input
0
Example 2 output
0
0
0
0

Your answer

Main.java

Input for the Run button

How this is scored: your answer runs against every test case, and the fraction it passes becomes your score out of 4. That is not how a human AP reader marks a rubric, so treat the score as a check on whether your code works, and the rubric above as the thing you are actually practising.


  

  

Stuck?

Hint 1

Part (b) is n times n and part (c) is about half of that. Comparing the two numbers the driver prints is the whole insight of this lesson: the same nesting can do very different amounts of work.

Hint 2

Every part returns 0 for n of 0, because none of the loops run. That is worth checking, because a formula written from memory often does not.

Hint 3

Part (d) grows very slowly. Doubling n adds ONE step, which is what makes halving so much better than counting down by one.

Before you submit

4 mistake(s) that lose points on this question

Each of these is a real error the grader catches. Check your answer against them before you submit, not instead of trying.

  • part (c) starts the inner loop at i, counting the diagonal too
  • part (d) counts one extra pass after the value reaches zero
  • part (b) runs the inner loop to a fixed bound instead of n
  • part (a) counts one past the end

Where to go next

Get in Touch

Whether you're a student, parent, or teacher — I'd love to hear from you.

Just want free AP CS resources?

Enter your email below and check the subscribe box — no message needed. Students get daily practice questions and study tips. Teachers get curriculum resources and teaching strategies.

Typically responds within 24 hours

Message Sent!

Thanks for reaching out. I'll get back to you within 24 hours.

🏫 Welcome, fellow educator!

I offer curriculum resources, practice materials, and study guides designed for AP CS teachers. Let me know what you're looking for — whether it's classroom materials, a guest speaker, or Teachers Pay Teachers resources.

Email

[email protected]

📚

Courses

AP CSA, CSP, & Cybersecurity

Response Time

Within 24 hours

Prefer email? Reach me directly at [email protected]