там вообще две проверки в коде - одна по моему способу (через чередование), а другая - в тупую через два цикла. Потом они сравниваются.
Суть в том, что если взять A = 1, B = 10^7 - не совпадает количество нужным нам чисел (разница была в 1). Стал копать дальше, а код врёт уже после 100.
Вот это добро накидал сейчас. Работает
int A = 99;
int B = 10001;
int count1 = 0;
int sum = 0;
int a = A;
while(a != 0) {
sum += a % 10;
a /= 10;
}
a = A;
bool parity = false;
if(sum % 2 == 0) {
count1++;
parity = true;
}
while(a < B) {
a++;
if(a % 10 != 0)
parity = !parity;
if(parity)
count1++;
}
int count2 = 0;
for(int i = A; i <= B; i++) {
sum = 0;
int temp = i;
while(temp != 0) {
sum += temp % 10;
temp /= 10;
}
if(sum % 2 == 0)
count2++;
}
Console.WriteLine(count1);
Console.WriteLine(count2);
Console.ReadLine();
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.