10101. Числа Бангла

 

В языке Бангла обычно используют слова 'kuti' (10000000), 'lakh' (100000), 'hajar' (1000), 'shata' (100) при преобразования числа в его текстовое представление. Найти текстовые представления заданных слов.

 

Вход. Каждая строка содержит положительное число, не большее 999999999999999.

 

Выход. Для каждого входного числа вывести его текстовое представление. В начале каждой строки должен стоять номер теста, выровненный справа до четырех знаков. Далее следует точка и текстовое представление числа, как показано в ниже приведенном примере.

 

Пример входа

23764

45897458973958

 

Пример выхода

   1. 23 hajar 7 shata 64

   2. 45 lakh 89 hajar 7 shata 45 kuti 89 lakh 73 hajar 9 shata 58

 

 

РЕШЕНИЕ

элементарные вычисления

 

Анализ алгоритма

Изюминка задачи состоит в том, что если входное число n >  10000000, то количество 'kuti' также необходимо выводить в языке Бангла. Текстовое представление входного числа находится обыкновенным моделированием.

 

Пример

Число 45897458973958 содержит 4589745 kuti 89 lakh 73 hajar 9 shata 58, однако количество kuti необходимо выводить как 45 lakh 89 hajar 7 shata 45 kuti.

 

Реализация алгоритма

Функция Bangla выводит число n в текстовом формате языка Бангла.

 

void Bangla(long long n)

{

  if (n / 10000000 > 0) printf(" %d kuti",n / 10000000); n = n % 10000000;

  if (n / 100000 > 0) printf(" %d lakh",n / 100000); n = n % 100000;

  if (n / 1000 > 0) printf(" %d hajar",n / 1000); n = n % 1000;

  if (n / 100 > 0) printf(" %d shata",n / 100); n = n % 100;

  if (n > 0) printf(" %d",n);

}

 

Для каждого теста (входного числа n типа long long) выводим его номер. Если n = 0, то выводим 0 и переходим к следующему тесту. Иначе если n >  10000000, то отдельно выводим количество kuti, после чего печатаем остаток числа.

 

  while(scanf("%lld",&n) == 1)

  {

    printf("%4d.",cs++);

    if (!n) printf(" 0\n"); else

    {

      if (n / 10000000 > 0)

      {

        Bangla(n / 10000000);printf(" kuti");n = n % 10000000;

      }

      Bangla(n);printf("\n");

    }

  }