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

Разбиение числа на сумму квадратов(ошибка в коде). - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удалить из массива элементы кратные 7 http://www.cyberforum.ru/cpp-beginners/thread179035.html
5. 1)создать масив случайных целых чисел 2)вывести его на экран 3)удалить элементы кратные 7 4)добавить после каждого не парного елемента елемент 0 5)вывести на экран 3 и 4 пункты как в С++...
C++ Линейный однонаправленный список; ошибка сегментации Инициализируется всего одна структура данных, затем система пишет: "Ошибка сегментации". Подскажите, в чём проблема. #include<iostream> #include<string.h> using std::cin; using std::cout;... http://www.cyberforum.ru/cpp-beginners/thread179032.html
C++ Разбить введенную строку на слова и выделить под каждое слово отдельный массив
Ребята помогите плиз! Задали задание, а сделать не могу( 1) Написать ф-ию, которая определяет является ли строка палиндромом 2) Заменить в строке все указанные буквы на тире (или звездочки) и...
Найти все числа-палиндромы, которые не больше 100, и их квадраты тоже палиндромы C++
Натуральное число называется палиндромом, если его запись читается однинакого с начала и с конца (4884, 393, 1). Найти все числа-паиндромы, которые не больше 100, и их квадраты тоже палиндромы. ...
C++ программу копирования из заданного текста данной части в строку http://www.cyberforum.ru/cpp-beginners/thread179027.html
помогите написать программу копирования из заданного текста данной части в строку, (дано: abcdefgh пользователь вводит с клавы: № елемента, к-сть символов) помогите плиз... Добавлено через 1 час...
C++ массивы, его индексы Известны данные о росте 8 юношей в классе, упорядоченны по убыванию. Ни одна пара учеников не имеет одинаковый рост. В начале учебного года в класс поступил новый ученик.Какое место в перечне роста... подробнее

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

Разбиение числа на сумму квадратов(ошибка в коде). - C++

20.10.2010, 18:15. Просмотров 550. Ответов 2
Метки (Все метки)

Задача банальна: с клавиатуры вводится число, нужно его представить в виде суммы двух квадратов. Программа должна работать менее 1 секунды. Диапазон вводимых чисел 1) до 1е3 2) до 1е6 3) до 1е9 4) до1е16(это уже, как мне сказали, совсем тяжко).
Ну, в общем, вот я тут написал.

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
#include "stdio.h"
#include "conio.h"
#include "iostream"
using namespace std;
 
int main(){
 int i, b, t=0;
 long long N, a=0;
 setlocale (LC_ALL, "Russian");
 printf( "Введите число:");
 cin >> N;
 bool *kv;
 kv = (bool*)calloc(1e14,sizeof(bool));
 for (i=1;a<N;i+=2){
     a+=i;
     if (a<10e13)
     kv[a]=1;
 t++;}
 kv[0]=1;
 a=0;
 for (i=1;a<N;i+=2){
     a+=i;
     t++;
     if ((N-a)>0)
     if (kv[N-a]==1){
        cout << "\na=" << a << " b=" << N-a << " t=" << t << "\n";
        cin >> b;
        if (b==-1)
            return 0;
     }}
     cout << "Сие не представляется возможным" << " t=" << t;
     _getch();
     return 0;
}



Суть алгоритма, если надо будет, поясню.
Проблема вот в чем: если я ввожу число 9999999999(десять девяток) и более (с какого это начинается не знаю, не проверял) то вылетает ошибка "Необработанное исключение в "0x001d15a2" в "переборы.exe": 0xC0000005: Нарушение прав доступа при записи "0x10de66e9", и ссылаются на kv[a]=1;, причем в этот момент а=276457129. если бы "а" было больше размерности масива, я бы понял, а так 0_о
О :-)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru