You could arrange the buttons in an X-Y layout, like in the figure below (which I extracted from this source). That will allow you to use 20 pins (10 for the rows, 10 for the columns) instead of 100.
The polling algorithm is as follows (from the same source):
Continuous Polling Operations
In this mode of operation, the MicroConverter continuously polls the keypad for a key press. This operation is used where the MicroConverter has completed a task and is now waiting for input before proceeding. In this mode, the keypad is connected to one port of the MicroConverter, Port 2 in this example. Figure 3 shows
the connectivity. The output from the MicroConverter, following a key press, is viewed using HyperTerminal running on a PC. The MicroConverter is connected to the PC via the COM1 port. This is the reason for showing the RS-232 connection.
As can be seen in Figure 3, the four columns (X1 to X4) are pulled up to VDD and are also connected to four of the MicroConverter port pins (P2.4 to P2.7). The four ADuC8xx rows (Y1 to Y2) are connected to the other four port pins (P2.0 to P2.3). The MicroConverter outputs 0 or drives low the keypad rows (P2.0 to P2.3) one at a time and
checks the columns (P2.4 to P2.7) for a low condition.
For example, the following is the sequence of events up to a switch press detection (Switch 5 in this case). The MicroConverter outputs a low on P2.0 (Y1) and checks for a low on P2.4 to P2.7. In this case, no low is found and so it returns P2.0 (Y1) to high and moves on to P2.1 (Y2). The MicroConverter now drives P2.1 (Y2) low and again
checks P2.4 to P2.7 for a low condition. This time it finds that P2.5 (X2) is low, due to Switch 5 being pressed. The MicroConverter now knows that the interconnect
of Y2 and X2 has been shorted, therefore, this is 5.
But you don't need to implement the algorithm yourself. Instead you can use the Arduino Keypad lib. The links are below:
See this answer if you need to lay down the buttons yourself. It explains how to layout 4 pin buttons on a single-sided board in a way that you don't need to use jumpers. I'm copying the X-Y layout from that question below: