Distribute an array of numbers equally
There are a number of things that I see that may help you improve your program.

Avoid needless recalculation

There is a lot of calculation within the calc_even routine that doesn't need to be repeated for every step through the loop.  Also, there are two separate loops in main -- one the calculates and stores the results and another that prints them.  There is no reason that the results couldn't simply be generated and printed within a single loop.  In addition to being more efficient in terms of computation, it would also use less memory since there would be no need to save the results.  They can simply be calculated and discarded.

Prefer const to #define

The use of #define A 19 is better expressed as const int A = 19; because the latter has a defined type, while a #define does not enforce any notion of type.

Think of the user

The program as currently coded needs to be recompiled if we want to try any other pair of numbers.  It would be better to accept those parameters from the command line rather than making them fixed.

Use library functions

The program calculates both a quotient and remainder for a given pair of numbers.  There is already a library function div that does that in a single step.

Understand integer conversion rules

This code can be greatly simplified:

int extra_add = 1;
if (no &gt; remain) {
    extra_add = 0;
}


A boolean value, when converted to an int in C is defined as 0 if it is false and 1 if it is true, so that bit of code can be expressed instead as:

int extra_add = (no &lt;= remain);


Use more descriptive names

The names you have chosen are generally not too bad, but A, B and no are not very good names.  

Reduce complex logic

The calc_even calculations are entirely too complex for the requirements of the program.  Think first about how you'd do this with pencil and paper.  If we have 5 bins and 19 numbers, we divide to get a quotient (3) and remainder (4).  So that means that all bins will have at least 3 numbers and 4 of the bins will have one extra.

Putting it all together

Applying all of these suggestions, an alternative might look like this:

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(int argc, char *argv[])
{
    if (argc &lt; 3) {
        puts("Usage: divide number bins");
        return 0;
    }
    int number = atoi(argv[1]);
    if (number &lt;= 0) {
        puts("Error: number must be &gt;= 0");
        return 1;
    }
    int bins = atoi(argv[2]);
    if (bins &lt;= 0) {
        puts("Error: bins must be &gt;= 0");
        return 1;
    }
    div_t qr = div(number, bins);
    int begin = 0;
    for (int i=0; i &lt; bins; ++i) {
        int end = begin + qr.quot + (i &lt; qr.rem);
        printf("Grp %d: %d %d\n", i+1, begin, end-1);
        begin = end;
    }
}