C++, 54 51 bytes
[](int N,int P){int F;for(F=N;P;F-=++N,P--);return F;}
[](int N,int P){int F=N;while(P--)F-=++N;return F;} [](int N,int P){int F;for(F=N;P;F-=++N,P--);return F;}
Test:
#include <iostream> int main(void) { int N, P; std::cin >> N >> P; auto f = [](int N,int P){int F=N;while(P--)F-=++N;return F;}; std::cout << f(N,P) << std::endl; return 0; }