У меня проблемы с работой с большими целыми числами (10 ^ 8 и 10 ^ 16 (сумма чисел между интервалами)). Мой текущий код не A C. Я полагаю, он получает одобрение 80/100 из-за переполнения лимита? Есть ли другие способы избежать операций с массивами? Если нет, то как мне решить следующую проблему с сложением и вычитанием массива?
Проблема: Тасним приезжает в Динаджпур, который очень известен производством личи. Сегодня она приходит в сад личи и замечает странную вещь. Владелец сада поместил личи в ведра разных размеров, расположенных в ряд так, чтобы каждое следующее ведро содержало ровно на одну личи больше, чем предыдущее. Она также узнает, что самое маленькое ведро содержит ровно M личи, а самое большое ведро содержит ровно N личи. Тасним очень любопытно узнать общее количество личи, которое есть во всех ведрах. Но она не настолько знаток математики. Более того, она также не знает, сколько там ведер. Итак, она просит вашей помощи. Теперь ваша задача - помочь Тасниму определить количество ведер, а также общее количество личи, которые содержат ведра.
Позвольте привести пример: самое маленькое ведро имеет ровно 5 личи, а самое большое имеет ровно 11. Итак, в 7 ведрах всего 5 + 6 + 7 + 8 + 9 + 10 + 11 = 56 личи.
Вход Будет несколько тестовых случаев в каждый входной файл, где каждый тестовый пример содержит два целых числа, M и N (0 8 ), обозначая количество личи в наименьшем и наибольшем сегменте соответственно.
Входной файл будет завершен, когда M и N оба равны нулю (т. Е. M равно 0, а N равно 0), и каждый входной файл будет содержать не более 100 тестовых случаев.
Вывод Для в каждом случае выведите количество ведер и общее количество личи, разделенных пробелом. Не забудьте напечатать пустую строку для каждого теста. Мой код:
#include <stdio.h>
#include<string.h>
int main(){
long unsigned int m,n,i=0,num,x=0, total;
while(x<100){
scanf("%lu %lu",&m,&n);
if(m==0 && n==0){
break;
}
else{
num=(n+1)-m;
total=(num*(m+n))/2;
printf("%lu %lu\n",num,total);
}
x++;
}
return 0;
}```