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

Обсуждение задачи 1044. Счастливые билеты. Easy!

help,please,why my solution fail?
Послано mythysjh 2 сен 2011 14:53
here is my code:

#include <stdio.h>
int total(int count, int sum)
{
    int result = 0;
    if( count > 1 )
    {
        int i=0;
        for (; i <= 9; i++)
        {
            result += total(count - 1, sum     - i);
        }
    }
    else
    {
        return  sum     < 10 && sum >= 0 ? 1 : 0;
    }
    return result;
}

int main ()
{
    unsigned a;
    int n,i,c,b;

    scanf("%ud", &a);
    b = a / 2 * 9;
    for(i=0; i <= b; i++ )
    {
        c = total(a/2, i);
        n += c * c;
    }
    printf("%d", n);

    return 0;
}
i tried 2,4,6,8,the result is correct,but when i submit my solution,[wrong answer] is returned...

Edited by author 02.09.2011 14:58
Re: help,please,why my solution fail?
Послано mythysjh 3 сен 2011 06:58
i got it,in visual stdio 2010,auto variable must initialized before used
Re: help,please,why my solution fail?
Послано Bahador Biglari 15 дек 2011 12:18
Hello Smart :D,

Can you please explain how does your algorithm works? I find out that the summation of digits is multiplication of 9 at most; but why (c* c) ???? ( please explain the whole intention behind your algo as well.

Thanks
Re: help,please,why my solution fail?
Послано killo 25 июн 2012 16:20
Here is the correct code
#include <stdio.h>
int total(int count, int sum)
{
    int result = 0;
    if( count > 1 )
    {
        int i=0;
        for (; i <= 9; i++)
        {
            result += total(count - 1, sum     - i);
        }
    }
    else
    {
        return  sum     < 10 && sum >= 0 ? 1 : 0;
    }
    return result;
}

int main ()
{
    unsigned a;
    int n = 0;
    int i,c,b;

    scanf("%ud", &a);
    b = a / 2 * 9;
    for(i=0; i <= b; i++ )
    {
        c = total(a/2, i);
        n += c * c;
    }
    printf("%d", n);

    return 0;
}
Here is the correct code