ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1083. Факториалы!!!

There is my supervisions about this task.
Послано Endorphin 16 апр 2011 19:40
The condition of the task is really bad. For example, test 8, broadly speaking, is not suitable with task conditioon.
Here is my solution.

#include <iostream>
using namespace std;

int main()
{
    int n = 0;
    char s[1000];
    gets(s);
    int k = strlen(s);

    if ((s[0] == '1') && (s[1] == '0'))
    {
        n = 10;
        k += -3;
    }
    else
    {
        n = s[0] - '0';
        k += -2;
    }

    if ((k <= 0)||(n - k <= 0))
    {
        cout << n;
        return 0;
    }

    long long tmp = (long long)n;
    int i = 1;

    if (n % k != 0)
    {
        while (1)
        {
            tmp *= (n - i*k);

            if (n % k == n - i*k)
            {
                break;
            }
            else
            {
                i++;
            }
        }
    }
    else
    {
        while (1)
        {
            tmp *= (n - i*k);

            if (k == n - i*k)
            {
                break;
            }
            else
            {
                i++;
            }
        }
    }

    cout << tmp;
    return 0;
}