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

Обсуждение задачи 1593. Квадратная страна. Версия 2

WA 32. Why?
Послано Yagudin Ruslan 5 май 2013 20:06
#include <queue>
#include <iostream>
#include <set>
#include <cstdio>
#include <algorithm>
#include <string>
#include <map>
#include <string>
#include <sstream>
using namespace std;
bool k(long double x)
{
    long double t=floor((sqrt(x)));
    if (t*t==x)
    {
        return true;
    }
    else
        return false;
}
int main()
{
    long double n;

    scanf("%lf",&n);
    long long c=n;
    if(k(n))
    {
        cout<<1;
        return 0;
    }

    for(long int i=1;i<=sqrt(n)/2+2100000;i++)
    {
        long double q=n-i*i;
        if(k(q))
        {
            printf("%d",2);
            return 0;
        }
    }
    for(long int i=sqrt(n);i>=sqrt(n)-2100000;i--)
    {
        long double q=n-i*i;
        if(k(q))
        {
            printf("%d",2);
            return 0;
        }
    }
    long long q = (long long)n;
    for ( int i = 0; i <20; i ++)
    {
        long long d = 1;
        for ( int j = 0; j < i;j++)
        {
            d*=4;
            if ( q > n)
            break;
        }
        if ( d > q)
            break;
        if( (long long)q % d==0)
        {
            long long temp = q/d - 7;
            if ( temp %8==0)
            {
                printf("%d",4);
                return 0;
            }

        }
    }

    printf("%d",3);
    return 0;
}
Re: WA 32. Why?
Послано ER 10 июн 2014 11:43
I think you want i<=sqrt(n/2) not  i<=sqrt(n)/2.