Другие языки программирования и технологии
Подсчитать количество 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.
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.
а я в уме посчитал 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: ответы не восприняли , разделил пробелом :-)
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.
Всего существует 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.
Можно гораздо проще:
#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 потом распечатай.
#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 потом распечатай.
Похожие вопросы
- Помогите написать программу в Assembler НАЙТИ СУММУ ЦИФР 3-ЗНАЧНОГО ЧИСЛА И ПРОИЗВЕДЕНИЕ 4-ЗНАЧНОГО ЧИСЛА
- Среди двузначных чисел вывести на экран те, сумма цифр которых равна х(0<х<18). Число х вводится с клавиатуры.В паскале!
- Pascal: Дано 3-значное число N.Определить,являются ли числа,из которых оно состоит членами геометрической прогрессии
- найти все 3 значные числа в которых присутствует 0 паскаль
- Написать программу вывода всех возможных вариантов 3 значного числа без повторений на Паскале
- Как можно решить такое задание : " Ввести из клавиатуры шестизначное число, определить цифры, которые находится рядом
- Помогите написать программу. Дано натуральное 5-значное число n.Определить равны ли сумма и произведение его цифр.
- напишите пожалуйста все возможные 5-ти значные числа, состоящие из цифр от 0 до 9
- Создать программу на С++:Вывести случайным образом ряд из 15 цифр. Задать число и подсчитать количество таких цифр в выв
- Помогите найти алгоритм подбора множителей к числам заданного массива, сумма произведений которых равна заданному числу