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

Обсуждение задачи 1001. Обратный корень

1001 Why wrong answer?
Послано Alexandra 27 июл 2011 01:10
#include <stdio.h>
#include <math.h>

int c;
float string[1024];
int i=0,b=0;

void main(){
    while((scanf("%d",&c)) != EOF){
        string[b]=c;
        b++;
        }
    for (i=b-1;i>-1;i--)printf("%f \n",sqrt(string[i]));
}
Re: 1001 Why wrong answer?
Послано morbidel 27 июл 2011 14:18
Try double instead of float because the numbers can be as large as 10^18.
Also the 1024 limit of the array is small, try 1000000.
Re: 1001 Why wrong answer?
Послано Alexandra 27 июл 2011 23:49
I try, but I have got the same result
Re: 1001 Why wrong answer?
Послано daftcoder [Yaroslavl SU] 28 июл 2011 11:14
1) Sure float is not enough, use double.
2) Also the numbers in input can be about 10^18, and int is also not enough! Use long long.
3) Also there is about 256*1024 = 262 144 bytes in input, so there could be about 131 072 numbers!

I edited your code a little and got AC.
Re: 1001 Why wrong answer?
Послано Alexandra 28 июл 2011 16:32
#include <stdio.h>
#include <math.h>

long long c;
double string[1000000];
long i=0, b=0;

void main(){
    while((scanf("%d",&c)) != EOF){
        string[b]=c;
        b++;
        }
    for (i=b-1;i>-1;i--)printf("%f \n",sqrt(string[i]));
}

?
Re: 1001 Why wrong answer?
Послано daftcoder [Yaroslavl SU] 28 июл 2011 17:03
Now problem with scanf/printf parameters
 - for long long "lld" or "I64d";
 - for double "lf"

So correct to scanf("%lld"... and printf("%lf... and get AC =)
Re: 1001 Why wrong answer?
Послано Alexandra 28 июл 2011 17:10
Thank you :)