Option D should be the correct one.
that is $50$ cards of the pack contain true statements.
Why?
Because if the statement written on card number $x$ is true then all the statements written in card numbers $x + 1$ to $100$ must be true.
For Example if Card number $3$ is true, then according to the statement written in this card, "There are at most $3 - 1(=2)$ true cards in the pack".
This implies number of true cards must be less than $3$.
Now the statement on card number $4$ will imply that the number of true cards must be less than $4$.
similarly the statement on card number $100$ will imply that the number of true cards must be less than $100$.
So if statement written on card number $3$ is true then all the statements written on the card numbers $4$ to $100$ will vacuously be true.
But now the the number of true cards will be $98$ (from card number $3$ to $100$) hence the statement on the card number $3$ must be false.
Clearly this is inconsistent so card number $3$ can not be a true card.
Conclusion:
If card number $x$ is a true card then:
1. There are at least $(100 - x) + 1$ true cards. and
2.Total Number of true cards must be less then or equal to $x - 1$
(where $x$ belongs to Integers between $1$ and $100$).
For any value of $x \leq 50$ both of the above statements can not be true simultaneously, so none of the cards from $1$ to $50$ is a true card.
For any value of $x \geq 51 $ both of the above statements can be true at the same time, so all of the cards from $51$ to $100$ must be true cards & the total number of true cards will be $50$.
It can be observed that comparing one of the boundary cases of each of the above two statements will give us of the boundary cases of our answer.
that is, on solving:
$(100 - x) + 1 = x - 1$
we get $x = 51$ which indeed is our smallest true card.