How to solve/approach for counting the large range of numbers in mind for this particular type of eliminating numbers? Here is the following question. I was wondering on how to solve such questions. 
100 people standing in a circle in an order 1 to 100. No 1 has a sword. He kills next person i.e. No 2 and gives sword to next to next i.e No 3. All person does the same until only 1 survives. Which number survives at the last?
---- I couldn't solve this. This was my approach.


*

*I made the small model of it. Rather than solving till 100, I made a series until 10 only. I thought whatever the answer will be from 1 to 10, the same answer will apply for 1 to 100. The 100 is just an illusion. I was wrong the answer is greater than 10.

*I thought of literally counting until I am left with one person. I just gave up, my brain got tired after doing a few iterations. 
My question is how to tackle such kind of questions. What I should do ideally or think ideally? Please help me here. 
 A: What's wrong with writing all the numbers from 1 to 100 and just eliminating them one after another? This took me 5 minutes and if I made no mistake the solution is 83 73.
I don't see an analytical way to solve this problem, because the sequence of people that get eliminated follows a rather complicated pattern. More specifically, a problem occurs everytime your sequence "crosses" the beginning of the circle from person 100 to person 1. But this type of problem can easily be processed with the help of a computer. Writing a program to solve this problem shouldn't be too complicated.
Edit: Here's a program in C++(11):

#include <cstdio>
#include <vector>

constexpr int num = 100;

int next(int& value){
    value = (value + 1)%num;
    return value;
}

int main(int argc, char** argv){
    std::vector<bool> elim(num, false);
    int position = 0;   // Person that has the sword
    for(int i = 1 ; i < num ; ++i){
        do{ // find the first person alive
            next(position);
        }while(elim[position]);
        elim[position] = true;  // Eliminate person
        do{ // find the next person alive
            next(position);
        }while(elim[position]);
    }
    for(int i = 0 ; i < num ; ++i){
        if(!elim[i])
            printf("Last person alive is #%i\n", i + 1);
    }
}

