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

Решение уравнения с 9 переменными - C++

Восстановить пароль Регистрация
 
zigmynd
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 5
30.04.2016, 12:04     Решение уравнения с 9 переменными #1
C++ сам знаю плохо, увы. Но решил воспользоваться им, чтоб решить задачку Кольцевой хеш (Rolling hash) по алгоритму рабина карпа. Вот сам алгоритм на питоне.
Python
1
2
3
4
5
6
7
8
9
flag = "*********"
def RabinKarpRollingHash(string, a):
    result = 0
    l = len(string)
    for i in range(l):
        result += ord(string[i]) * (a ** (l - i - 1))
    print result
 
RabinKarpRollingHash(flag, 256)
результат вывода 1317748575983887541099. Надо найти flag.

Вот то, что я попытался сделать. Но программа лишь повторяет набор цифр от 97 до 122 бесконечное количество раз. Поправьте меня, пожалуйста.
C++
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
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
int main()
{
double a,b,c,d,e,f,g,h,k;
    for (a=97;a<=122;a++)
        for (b=97;b<=122;b++)
            for (c=97;c<=122;c++)
                for (d=97;d<=122;d++)
                    for (e=97;e<=122;e++)
                        for (f=97;f<=122;f++)
                            for (g=97;g<=122;g++)
                                for (h=97;h<=122;h++)
                                    for (k=97;k<=122;k++)
            {
                if ((18446744073709551616*a+72057594037927936*b+281474976710656*c+1099511627776*d+4294967296*e+16777216*f+65536*g+256*h+1*k)==1317748575983887541099)
                    cout<<a;
                    cout<<" ";
                    cout<<b;
                    cout<<" ";
                    cout<<c;
                    cout<<" ";
                    cout<<d;
                    cout<<" ";
                    cout<<e;
                    cout<<" ";
                    cout<<f;
                    cout<<" ";
                    cout<<g;
                    cout<<" ";
                    cout<<h;
                    cout<<" ";
                    cout<<k;
            }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2016, 12:04     Решение уравнения с 9 переменными
Посмотрите здесь:

C++ Решение уравнения
решение уравнения C++
Решение уравнения C++
Количество корней уравнения с 4 переменными C++
Решение уравнения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MDJH
5 / 5 / 3
Регистрация: 24.11.2015
Сообщений: 23
Записей в блоге: 1
30.04.2016, 12:28     Решение уравнения с 9 переменными #2
ну в if'е вы скобки не поставили, это одно. Ещё большие числа без "." он считает за ineger, поэтому я поставил 1317748575983887541099.0

вот как-то так

C++
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
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
int main()
{
    double a, b, c, d, e, f, g, h, k;
    for (a = 97; a <= 122; a++)
    {
        cout << "|";
        for (b = 97; b <= 122; b++)
            for (c = 97; c <= 122; c++)
                for (d = 97; d <= 122; d++)
                    for (e = 97; e <= 122; e++)
                        for (f = 97; f <= 122; f++)
                            for (g = 97; g <= 122; g++)
                                for (h = 97; h <= 122; h++)
                                    for (k = 97; k <= 122; k++)
                                    {
 
                                        if ((18446744073709551616.0 * a + 72057594037927936 * b + 281474976710656 * c + 1099511627776 * d + 4294967296 * e + 16777216 * f + 65536 * g + 256 * h + 1 * k) == 1317748575983887541099.0)
                                        {
                                            cout << a;
                                            cout << " ";
                                            cout << b;
                                            cout << " ";
                                            cout << c;
                                            cout << " ";
                                            cout << d;
                                            cout << " ";
                                            cout << e;
                                            cout << " ";
                                            cout << f;
                                            cout << " ";
                                            cout << g;
                                            cout << " ";
                                            cout << h;
                                            cout << " ";
                                            cout << k;
                                        }
                                    }
    }
    return 0;
}
но долго у меня думает....
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,704
30.04.2016, 12:33     Решение уравнения с 9 переменными #3
Что-то не похоже на то, что на питоне.
Числа слишком большие будет потеря точности.
zigmynd
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 5
30.04.2016, 12:42  [ТС]     Решение уравнения с 9 переменными #4
Может есть другие альтернативы решения этого чуда? кроме того, что я попробовал реализовать.

У меня тоже долго думает. Наверное, бесконечно долго.
Yandex
Объявления
30.04.2016, 12:42     Решение уравнения с 9 переменными
Ответ Создать тему
Опции темы

Текущее время: 11:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru