Другие языки программирования и технологии

Подсчитать количество 3-значных чисел,сумма цифр которых меньше либо равна 24

Вот мой вариант программы.Сначала я пытался реализовать ее через ручной ввод числаа,потом понял,что я неправильно понял условие...Стал пытатся решить через подчет собственно чисел....В и тоге получился этот бред....Исправьте,пожалуйста,если таковое возможно,данную програму до состояния работы!)#include <cstdlib>#include <iostream>#include <conio.h>using namespace std;int main(){const int n=3;int c=100,k,kol,m=0,a[n],b[255];while (c<=999) //* {if (m<=24){for (int i=1; i<4; i++){cout<<"vvedite "<<i<<">>a;m+=a;}}k=0;for (int k=1; k<4; k++){cin>>b[k];} }//*_getch();}
Писал что-то подобное, но давно, еще на первом курсе.. . Делал через операции деления нацело и взятия остатка от деления (первая div, вторая %, если правильно помню) . Получаешь откуда-либо числа и пропускаешь через цикл (a - число с которым работаем, n - искомое количество трехзначных чисел, прочие переменные - вспомогательные) :

k := 0;
k := a div 100; // делим число нацело на 100, то есть число сотен, результат пишем во вспомогательную переменную
a := a % 100; // берем остаток от деления числа нацело на 100, и присваиваем той же переменной
k := k + a div 10; // теперь берем остаток от деления на 10, то есть число десятков и отправляем по тому же адресу, что и число сотен
a := a % 10;
k := k + a;
if k <= 24
n = n +1;

Например, есть число 153 - а будет последователньо принимать значения 153, 53, 3, k - 1, 6, 9.
Миша Михайлов
Миша Михайлов
117
Лучший ответ
а я в уме посчитал 888-99=789 штук
Игорь Бронников Интересно считаете ;-)
#include <stdio.h>
int main()
{
int retval = 0;
for (int i = 100; i <= 999; ++i)
{
int c1 = i % 10;
int c2 = (i /10 ) % 10;
int c3 = i / 100;
if (c1 + c2 + c3 <= 24) ++retval;

}
printf("Result: %d", retval);
getchar();
}

Это - подсчет таких чисел. Вообще-то можно и вручную. Ответ получился - 890.
FIX: ответы не восприняли , разделил пробелом :-)
Задача действительно решается в уме.
Всего существует 900 трёхзначных чисел (а не 899 и уж тем более не 888). Нужно убрать все числа, сумма цифр которых больше 24., тоесть 25, 26 или 27.

27 даёт одно число - 999
26 дают 3 числа - 998,989 и 899
25 дают 6 чисел - 997,979,799,988,898,889

Других вариантов нет. То есть результат
900 - 10 = 890

ЗЫ
Если не веришь, что трёхзначных чисел 900 запусти такую программку

int result = 0;
for(int i = 100; i<1000;i++)
result++;

и выведи значение переменной result.
Павел Крымов
Павел Крымов
4 394
Можно гораздо проще:

#include <iostream.h>
#include <conio.h>

void main()
{
clrscr();
int k=0;
for(int i2=6;i2<10;i2++)
for(int i1=15-i2;i1<10;i1++)
{ k++;
cout << k << " - " << i2*100+i1*10+24-i2-i1 << endl;
}
getch();
}
========================

Demogorogon: Извини, не заметил, что числа меньше либо равно, вот фикс программы:

#include <iostream.h>
#include <conio.h>

void main()
{
clrscr();
int k=0;
for(int i2=1;i2<10;i2++)
for(int i1=0;i1<10;i1++)
for(int i0=0;i0<10 && i2+i1+i0<=24;i0++)
{
k++;
cout << k<< " - " << i2*100+i1*10+i0 << endl;
}
getch();
}

Если числа выводить не надо, просто удали строчку вывода из цикла, а значение k потом распечатай.

Похожие вопросы