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

Обсуждение задачи 1014. Произведение цифр

Correct solution on C++ (AC 0.015, Memory 225 kb)
Послано htzfun 3 янв 2012 17:19
The idea is to find divider for n in set between 2 and 9.
If there is no such dividers we'll have answer -1. If yes, we divide n by this divider and do it again, until n isn't equal 1.
Realization:

#include <iostream>
#include <math.h>
#include <cstdio>
#include <string.h>
using namespace std;
void main(void)
{
    long long int n;
    cin>>n;
    if (n==0)
        {
            cout<<"10" ;
            return;
        }
    if (n==1)
    {
        cout<<"1";
        return;
    }
    int *a = new int[14];
    for(int i = 0;i<14;i++)
    {
        a[i] = 0;
    }
    int counter  = 13;
    while(n>1)
    {
        for(int j = 9;j>=0; j--)
        {
            if (j==1)
                {
                    cout<<"-1";

                    return;
                }
            if (n%j==0)
            {
                a[counter] = j;
                counter--;
                n/=j;
                break;
            }
        }
    }
    for(int i = counter+1 ;i<14;i++)
    {
        cout<<a[i];
    }
    return;
}

Sorry, for my English and for some unnecessary includes or code=)