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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MasYes
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 4
#1

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

20.10.2010, 18:15. Просмотров 619. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2010, 18:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Разбиение числа на сумму квадратов(ошибка в коде). (C++):

Подсчитать сумму квадратов четных и сумму квадратов нечетных элементов массива - C++
Сформировать в программе массив из целых чисел от 2 до N. Подсчитать сумму квадpатов четных и сумму квадратов нечетных чисел.

Разложение числа на сумму квадратов - C++
Разложите число 125674 на сумму квадратов натуральных чисел так, чтобы количество слагаемых было минимальным. В ответе укажите найденное...

Подсчитать сумму квадратов четных и сумму квадратов нечетных чисел - C++
1. Дан массив A размера N. Вывести его элементы в следующем порядке: A1, AN, A2, AN–1, A3, AN–2, … . #include&lt;iostream.h&gt; void...

Найти сумму квадратов цифр введённого числа - C++
Мне нужно найти сумму квадратов цифр введённого числа. Допустим ввожу 63, компьютер должен выдавать результат 45, то есть 6*6+3*3. ...

Найти сумму квадратов элементов, больших некоторого числа X - C++
Найти сумму квадратов элементов, больших некоторого числа X Помогите пожалуйста (:

Вычислить сумму квадратов чисел от 1 до введенного вами целого числа - C++
С помощью оператора WHILE напишите программу, вычисляющую сумму квадратов чисел от 1 до введенного вами целого числа.

2
Nick Alte
Эксперт С++
1646 / 1018 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
20.10.2010, 18:43 #2
Переменная типа int вмещает числа от -2 до 2 миллиардов. unsigned int - от 0 до 4 миллиардов. 9 девяток и тем более 1e16 влезут в double (или специальный 64-битный целочисленный тип, у разных компиляторов они по-разному называются).
0
MasYes
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 4
20.10.2010, 19:03  [ТС] #3
Я заменил int на long long и ошибка осталась = (
И заодно вопрос по ходу - как создать булевский массив с 1е16 элементов? А то каллок мне уже при 1е15 ругается на ту же строчку, даже если ввести 8.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2010, 19:03
Привет! Вот еще темы с ответами:

Найти разложение натурального числа на сумму квадратов трёх целых чисел - C++
Для заданного натурального N (0 &lt; N ≤ 10^9) вычислить число троек целых чисел (x, y, z), таких, что x^2 + y^2 + z^2 = N. Помогите...

Вычислить сумму квадратов всех целых чисел, меньших заданного числа a - C++
Вычислить сумму квадратов всех целых чисел, меньших заданного числа a.

Вычислить сумму квадратов элементов массива B, которые меньше заданного числа А - C++
Тип элементов: действительные числа Кол-во элементов: 18 Элементы от -10 до 21 А = 5

Найти сумму квадратов цифр числа,с полученным числом проделаем аналогичную процедуру .Конечный результат 1||4 - C++
Задача №1 int main() { setlocale(LC_ALL,&quot;Russian&quot;); int n,s; s=0; bool f=false; cout&lt;&lt;&quot;Введите число: &quot;;cin&gt;&gt;n; int c=0; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru