У меня очень простой вопрос. Мне будет предоставлен первый термин арифметической прогрессии и общая разница. Мне нужно дать сумму цифр всех чисел между диапазоном L и R. Здесь сумма означает сумму < 10, что означает, что для числа говорят 157, сумма цифр равна 1 + 5 + 7 = 13, что равно далее 1 + 3 = 4. Диапазон - это индекс элементов. L означает L-номер этого ряда, а L начинается с 1. Здесь L и R могут быть от 1 до 10 18. Как я могу найти сумму этих цифр для такого большого диапазона. Я знаю, что цифра суммы числа n может быть рассчитана как (n-1)% 9 + 1. Но я не могу перебирать 10^18 номеров.нахождение суммы цифр в артефактной последовательности
Пример: предположим, что первый член арифметической прогрессии равен 14 и общая разница 7. Тогда сумма цифр всех чисел между 2 и 4 будет равна сумме (2 + 1) = 3 и (2 + 8) = (1 + 0) = 1 и (3 + 5) = 8, который равен 12
для картины нахождение
current=first;
ll arr[10]={0};
while(1)// search for the pattern
{
ll dsum=(current-1)%9+1;// calculating digit sum
if(arr[dsum]!=0)
break;
arr[dsum]=ptr;// saving the value in the array by using hashing
ptr++;
current+=c_diff;
}
for sum
for(ll i=1;i<ptr;i++)
{
sum[i]=sum[i-1]+new_arr[i];
}
См [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask) –
Добро пожаловать в StackOverflow! Сначала вам нужно попробовать что-то, и вы можете показать другим, что вы сделали, и какова конкретная проблема, с которой вы сталкиваетесь. –
Подсказка: повторяется ли эта последовательность (S (14, 7, 2) = {3, 1, 8, ...})? Докажите это. Вы будете хорошо на пути к большому упрощению проблемы. – Beta