problem: spoj.pl/problems/ZSUM/
help is required related to wat datatype to be use??
i used unsigned long long int in this code .. its wrking for sum given inputs but not for alll..
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
long long int mod ( long long int z )
{
z = z%10000007;
if ( z < 10000007 ) {
return z;
}
else {
z = mod(z);
}
}
unsigned long long int s( long int n, long int k )
{
unsigned long long int sum = 0;
long int i;
for ( i = 1; i <= n; i++ ) {
sum = sum + pow(i,k);
}
return sum;
}
unsigned long long int p( long int n )
{
unsigned long long int sum = 0;
long int i;
for ( i = 1; i <= n; i++ ) {
sum = sum + pow(i,i);
}
return sum;
}
int main()
{
long int n;
long int k;
long int z;
int c;
int count;
unsigned long long int sum;
scanf("%lld",&n);
scanf("%lld",&k);
while ( n != 0 && k != 0 ) {
c = 1;
sum = 0;
z = s(n,k) + p(n);
n = n-1;
sum = sum + z ;
count = 1;
while ( n > 1 && count < 3 ) {
z = s(n,k) + p(n);
if ( c % 2 != 0 ) {
sum = sum + c*z ;
}
else {
sum = sum + (-c)*z ;
}
c++;
n--;
count++;
}
if ( sum < 100000007){
printf("%lld\n",sum);
}
else {
printf("%lld\n", mod(sum));
}
scanf("%lld",&n);
scanf("%lld",&k);
}
return 0;
}