Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2013, 23:16   #1
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию Задача из школьной олимпиады.Решение не проходит один из тестов.

Picture 3.jpg
Задача простейшая, без затруднений решил и сдал, но при проверке не прошла один из двух тестов. Не могу понять в чём проблема, алгоритм вроде бы правильный, есть подозрение что неверен сам тест.
Вот решение
Код:
#include<stdio.h>
#include<math.h>
int main()
{
 int D, N, M, K, X;
 FILE *fp;
 fp = fopen("Input.txt","r");
 fscanf(fp,"%d%d%d",&D, &M, &N);
 fclose(fp);
 D = D * 1024 * 8;//Переводим килобайты в биты
 X = D / (M * N);//Сколько битов можно использовать для одной точки
 K = pow(2,X);//Количество цветов для точки
 fp = fopen("Output.txt","w");
 fprintf(fp,"%d",K);
 fclose(fp);
}
Тесты следующие
Цитата:
Input.txt: 64 512 256 Output.txt: 16
Input.txt: 2 128 8 Output.txt: 1
Первый проходит, второй нет.
Объясните в чём проблема.
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Старый 02.10.2013, 23:47   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
#include <stdio.h>
#include <math.h>

int
main()
{
    unsigned int D, N, M;
    FILE *fp;
    fp = fopen("Input.txt", "r");
    fscanf(fp, "%u%u%u", &D, &M, &N);
    fclose(fp);
    fp = fopen("Output.txt", "w");
    fprintf(fp, "%u", 1 << (D * 1024 * 8 / (M * N)));
    fclose(fp);
    return 0;
}
А так?
Кстати, эти ответы выдала Ваша программа?
А еще Вы можете вручную посчитать ответы к тестам.
64 512 256 => 16
2 128 8 => 65536
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 03.10.2013 в 00:01.
BDA вне форума Ответить с цитированием
Старый 03.10.2013, 14:17   #3
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
#include <stdio.h>
#include <math.h>

int
main()
{
    unsigned int D, N, M;
    FILE *fp;
    fp = fopen("Input.txt", "r");
    fscanf(fp, "%u%u%u", &D, &M, &N);
    fclose(fp);
    fp = fopen("Output.txt", "w");
    fprintf(fp, "%u", 1 << (D * 1024 * 8 / (M * N)));
    fclose(fp);
    return 0;
}
А так?
Кстати, эти ответы выдала Ваша программа?
А еще Вы можете вручную посчитать ответы к тестам.
64 512 256 => 16
2 128 8 => 65536
Вот моя программа как раз и выдаёт 16 в первом и 65536 во втором случаях, и сам я вычислил такие же значения. Так что получается не правы организаторы, а не я((
Спасибо за внимание.
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение школьной задачи Prosto_ Помощь студентам 12 22.04.2012 22:41
решение тестов для поступление panin56 Помощь студентам 9 22.12.2011 07:55
Команда атd звонок проходит один раз alenkov Работа с сетью в Delphi 4 06.12.2011 22:34
Задача с олимпиады Xardas Помощь студентам 4 29.02.2008 19:00
Задача с олимпиады Xardas Помощь студентам 5 27.02.2008 23:38