Форум программистов, компьютерный форум CyberForum.ru

Алгоритм Карацубы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа управления сенсорным дисплеем http://www.cyberforum.ru/cpp-beginners/thread1165503.html
Здравствуйте, форумчане! Хочу написать программу, которая по нажатию определенной кнопки будет отключать сенсорный экран ноутбука по принципу блокировки сенсорных дисплеев у смартфонов. Имеется Lenovo Yoga 13 на Windows 8.1, базовые знания С++ и интуитивное понимание работы компьютера (студент, только сейчас начал осваивать предмет "операционные системы и сети", но "архитектуры эвм" еще не было и...
C++ Парсер HTML страниц Здравствуйте, Начал учить C++, интересует информация, исходник парсера HTML страницы. Очень был бы благодарен такой информацией Добавлено через 11 минут Хочу попробовать, для начала разобратся с парсером. Или с чего, советуете начать? http://www.cyberforum.ru/cpp-beginners/thread1165493.html
Отсортировать строки быстрой сортировкой C++
Необходимо отсортировать строку в виде даты, но сортирует не корректно const int N = 10; struct Medicament{ int num; char* name; char form; int price;
Ошибка с присвоением значений к массивам C++
Значение функции дроби,не могу присвоить к массиву... не получается подсчет ..Помогите плиз..с этим кусочком.... Код: double drob(int a, int b) { return static_cast<double>(a)/b; } void readvec(char *name, int n) { int a,b;
C++ Найдите ошибки http://www.cyberforum.ru/cpp-beginners/thread1165474.html
class ABC{ int a=3; int b; int c; public: ABC(int n=1) {b=n;} mul() {c=1+a*b;} };
C++ Найдите ошибку в классе В классе PRIMER объявлен прототип int PRIMER(int a, float pi); подробнее

Показать сообщение отдельно
AlekseyL
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 3

Алгоритм Карацубы - C++

04.05.2014, 02:39. Просмотров 1300. Ответов 0
Метки (Все метки)

Помогите, пожалуйста с задачей. Ответ вроде верный, но по времени не проходит. Подскажите что переделать.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <cstdio>
#include <cstring>
#define forn(i, n) for (int i = 0; i < (int)(n); i++)
void Karatsuba( int n, int *c, int *a, int *b )
{
  if (n <= 8)
  {
    forn(i, 2 * n)
      c[i] = 0;
    forn(i, n)
      forn(j, n)
        c[i + j] += a[i] * b[j];
    return;
  }
  int k = n / 2;
  int *f = new int[n];
  int *a12 = new int[k];
  int *b12 = new int[k];
 
  Karatsuba(k, c, a, b);
  Karatsuba(k, c + n, a + k, b + k);
  forn(i, k)
  {
    a12[i] = a[i] + a[i + k];
    b12[i] = b[i] + b[i + k];
  }
  Karatsuba(k, f, a12, b12); 
  forn(i, n)
    f[i] -= c[i] + c[i + n];
  forn(i, n)
    c[i + k] += f[i];
}
const int N = 20;
int a[N], b[N], c[2 * N];
void read( int *a )
{
  static char s[N + 1];
  gets(s);
  int k = 0;
  for (int i = strlen(s) - 1; i >= 0; i--)
    a[k++] = s[i] - '0';
}
void out( int n, int *a ){
  forn(i, n)
    printf("%d", a[n - i - 1]);
}
int main(){
  read(a);
  read(b);
  Karatsuba(N, c, a, b);
  forn(i, 2*N)
    if (c[i] >= 10)
      c[i + 1] += c[i] / 10, c[i] %= 10;
  out(2 * N, c);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru