Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
1 / 1 / 1
Регистрация: 06.02.2014
Сообщений: 25
1

В американской армии считается несчастливым число 13, а в японской — 4. Перед международными учениями штаб рос

24.01.2015, 14:06. Показов 5814. Ответов 5
Метки нет (Все метки)

В чем дело& Понять не могу(
Вот условие: В американской армии считается несчастливым число 13, а в японской — 4. Перед международными учениями штаб российской армии решил исключить номера боевой техники, содержащие числа 4 или 13 (например, 40123, 13313, 12345 или 13040), чтобы не смущать иностранных коллег. Если в распоряжении армии имеется 100 тыс. единиц боевой техники и каждая боевая машина имеет номер от 00001 до 99999, то сколько всего номеров придётся исключить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int A, B, C, D, E;//ЦИФРЫ ЧИСЛА.
    int n = 0;// счетчик особых номеров
    for (int a = 3; a < 100000; a++)
    {
        A = (a - a % 10000) / 10000;
        a -= 10000 * A;
        B = (a - a % 1000) / 1000;
        a -= 1000 * B;
        C = (a - a % 100) / 100;
        a -= 100 * C;
        D = (a - a % 10) / 10;
        a -= 10 * D;
        E = a;
        if (A == 4 || B == 4 || C == 4 || D == 4 || E == 4)
            n++;
        if (A == 1 && B == 3 || B == 1 && C == 3 || C == 1 && D == 3 || D == 1 && E == 3)
            n++;
    }
    cout <<n;
    _getch();
    return 0;
}
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2015, 14:06
Ответы с готовыми решениями:

В американской армии считается несчастливым число 13, а в японской — 4. Перед международными учениями штаб армии реш
1. В американской армии считается несчастливым число 13, а в японской — 4. Перед международными...

Совместные учения Американской и Японской армий
21.В американской армии считается несчастливым число 13, а в китайской — 4. Перед совместными ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
__________________

Записывайтесь на профессиональные курсы C++ разработчиков
5
6955 / 6005 / 2726
Регистрация: 14.04.2014
Сообщений: 25,668
24.01.2015, 14:28 2
Может, проще так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
A = a;
while (A >= 4)
{
    if (A % 10 == 4)
    {
        ++n;
        break;
    }
    A /= 10;
}
B = a;
while (B >= 13)
{
    if (B % 100 == 13)
    {
        ++n;
        break;
    }
    B /= 10;
}
1
Эксперт PHP
2982 / 2502 / 1180
Регистрация: 14.05.2014
Сообщений: 7,070
Записей в блоге: 1
24.01.2015, 14:39 3
Цитата Сообщение от stormed Посмотреть сообщение
C++
1
A = (a - a % 10000) / 10000;
C++
1
A = a / 10000;
Цитата Сообщение от stormed Посмотреть сообщение
C++
1
B = (a - a % 1000) / 1000;
C++
1
B = a / 1000;
Цитата Сообщение от stormed Посмотреть сообщение
C++
1
C = (a - a % 100) / 100;
C++
1
C = a / 100;
Цитата Сообщение от stormed Посмотреть сообщение
C++
1
D = (a - a % 10) / 10;
C++
1
D = a / 10;
Добавлено через 2 минуты
Цитата Сообщение от nmcf Посмотреть сообщение
Может, проще так:
А если число содержит и 4 и 13, то оно посчитается дважды?

Добавлено через 3 минуты
Цитата Сообщение от stormed Посмотреть сообщение
C++
1
2
3
4
if (A == 4 || B == 4 || C == 4 || D == 4 || E == 4)
n++;
if (A == 1 && B == 3 || B == 1 && C == 3 || C == 1 && D == 3 || D == 1 && E == 3)
n++;
эти условия нужно объединить
1
6955 / 6005 / 2726
Регистрация: 14.04.2014
Сообщений: 25,668
24.01.2015, 14:39 4
Лучший ответ Сообщение было отмечено stormed как решение

Решение

Цитата Сообщение от Kerry_Jr Посмотреть сообщение
А если число содержит и 4 и 13
Да, немного не доработал. Всё ещё проще:
C++
1
2
3
4
5
6
7
8
9
10
A = a;
while (A >= 4)
{
    if (A % 10 == 4 || A % 100 == 13)
    {
        ++n;
        break;
    }
    A /= 10;
}
1
1 / 1 / 1
Регистрация: 06.02.2014
Сообщений: 25
24.01.2015, 15:41  [ТС] 5
Точно, ребят! Спасибо) Да, всё намного проще. И считаться должно дважды.

Добавлено через 2 минуты
Спасибо, ребят! Да.все намного проще) И вариант к примеру 13004 должен считаться единожды.

Добавлено через 8 минут
nmcf, красивое решение. серьезно.

Добавлено через 27 минут
Вот похожая. Может кому-нибудь понадобится.
В городе N есть большой склад на котором существует 50000 различных полок. Для удобства работников руководство склада решило заказать для каждой полки табличку с номером от 00001 до 50000 в местной типографии, но когда таблички напечатали, оказалось что печатный станок из-за неисправности не печатал цифру 2, поэтому все таблички, в номерах которых содержалась одна или более двойка (например, 00002 или 20202) — надо перепечатывать. Напишите программу, которая подсчитает сколько всего таких ошибочных табличек оказалось в бракованной партии.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int A;
    int n = 0;// счетчик особых номеров
    for (int a = 1; a < 50000; a++)
    {
        A = a;
        while (A >= 1)
        {
            if (A % 10 == 2)
            {
                ++n;
                break;
            }
            A /= 10;
        }
    }
    cout << n;
    _getch();
    return 0;
}
0
0 / 0 / 0
Регистрация: 15.01.2021
Сообщений: 1
15.01.2021, 13:13 6
Здравствуйте.
Подскажите пжлст, как можно сократить код? Недавно начала изучение JAVA, еще не совсем компактно получается решать задачи.

Добавлено через 1 минуту
String number = "";
int count1 = 0;
int count2 = 0;
int count3 = 0;
int count4 = 0;
int count5 = 0;
String t = "13";
String f = "4";
String zero1 = "0000";
String zero2 = "000";
String zero3 = "00";
String zero4 = "0";
String zero5 = "";
for (int i = 0;i <= 99999; i++) {
if (i>=0 && i<=9){
number = zero1+i;
String.valueOf(number);
if (number.contains(t) || number.contains(f)){
count1++;
System.out.print("--------" + count1 + " --------");
}
System.out.println(String.valueOf(number));
}
else {
if (i>=10 && i<=99){
number = zero2+i;
String.valueOf(number);
if (number.contains(t) || number.contains(f))
{
count2++;
System.out.print("--------" + count2 + " --------");
}
System.out.println(String.valueOf(number));
}
else {
if (i>=100 && i<=999){
number = zero3+i;
String.valueOf(number);
if (number.contains(t) || number.contains(f)){
count3++;
System.out.print("--------" + count3 + " --------");
}
System.out.println(String.valueOf(number));
}
else {
if (i>=1000 && i<=9999){
number = zero4+i;
String.valueOf(number);
if (number.contains(f) || number.contains(t)){
count4++;
System.out.print("--------" + count4 + " --------");
}
System.out.println(String.valueOf(number));
}
else {
if (i>=10000 && i<=99999){
number = zero5+i;
String.valueOf(number);
if (number.contains(t) || number.contains(f))
{
count5++;
System.out.print("--------" + count5 + " --------");
}
System.out.println(String.valueOf(number));
}
}
}
}
}
}
//System.out.println("Исключить: " + count1); //проверка подсчета
//System.out.println("Исключить: " + count2);
//System.out.println("Исключить: " + count3);
//System.out.println("Исключить: " + count4);
//System.out.println("Исключить: " + count5);
System.out.println("Всего исключить техники: " + (int)(count1+count2+count3+count4+count5));
0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.