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");
}
}