#include <iostream>
using namespace std;
int sum(int (*)(int), int);
int square(int);
int main()
{
cout << sum(square,4) << endl; // 1 + 4 + 9 + 16
}
int sum(int (*)(int k), int n)
{ // returns the sum f(0) + f(1) + f(2) + ... + f(n-1):
int s = 0;
for (int i = 1; i <= n; i++)
s += square(i);
return s;
}
int square(int k)
{
return k*k;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgc3VtKGludCAoKikoaW50KSwgaW50KTsKaW50IHNxdWFyZShpbnQpOwoKaW50IG1haW4oKQp7IApjb3V0IDw8IHN1bShzcXVhcmUsNCkgPDwgZW5kbDsgLy8gMSArIDQgKyA5ICsgMTYKfQppbnQgc3VtKGludCAoKikoaW50IGspLCBpbnQgbikKeyAvLyByZXR1cm5zIHRoZSBzdW0gZigwKSArIGYoMSkgKyBmKDIpICsgLi4uICsgZihuLTEpOgppbnQgcyA9IDA7CmZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKcyArPSBzcXVhcmUoaSk7CnJldHVybiBzOwp9CmludCBzcXVhcmUoaW50IGspCnsgCnJldHVybiBrKms7Cn0K