Хорошо, это код для простого вопроса, который я пытался сделать from Codechef. Вопрос был прост, но по какой-то причине я получаю неправильный ответ при использовании большого ввода, но правильный для небольшого ввода.Неверный вывод при использовании большого ввода
Пример
Когда я задаю houses
к 10
и k
к 2
, я получаю правильное количество, но когда держать дома то же самое и использовать k=10
Я бы получить неправильный ответ.
Мой код
#include<stdio.h>
#include<math.h>
int main(){
int houses[1000],k,numberofhouses;
int sum=0,tmpsum=0;
int i,j,d;
// printf("enter number of houses\n");
scanf("%d",&numberofhouses);
// printf("enter k\n");
scanf("%d",&k);
// printf("enter distance\n");
for(i=0;i<numberofhouses;i++) {
scanf("%d",&houses[i]);
}
for(i=0;i<(numberofhouses-1);i++) {
for(j=i+1;j<numberofhouses;j++) {
d = (houses[i] - houses[j]);
tmpsum = pow(abs(d),k);
sum = sum + 2 * tmpsum;
}
}
printf("sum is %d",sum);
return 0;
}
Java, C или C++? Кажется, это C. Так что настройте теги. – pzaenger
вы знаете, что int обычно 32 бит и максимальное значение около ~ 2kkk? –
Проблема указывает, что результат должен быть указан по модулю 1000000007, что могло бы быть ключом к вам, но которое вы пренебрегаете упоминанием или реализацией. Вы ищете [модульное усиление] (https://en.wikipedia.org/wiki/Modular_exponentiation), чтобы избежать переполнения ваших временных рядов или потери точности. –