IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> длинная арифметика, написал задачу, вродеправильно..а она не правильно работает(
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Вова

Репутация: -  0  +


 ! 
Теги !


посмотрите пожалуйста
вобщем найти (n*(n+1)*(2*n+1))/6
program gg;
var z,j,x,y,n,k,p,i,a1,b1,c1:integer;
a,b,c,r,g,l:string;



procedure sum(a,b:string; n,k,i,a1,b1,c1,p:byte;var c:string);
begin
delete(c,1,255);
p:=0;
n:=length(a);
k:=length(b);
if n>k
then
for i:=k+1 to n do
b:='0'+b
else
begin
for i:=n+1 to k do
a:='0'+a;
n:=k;
end;
for i:=n downto 1 do
begin
a1:=ord(a[i])-ord('0');
b1:=ord(b[i])-ord('0');
c1:=(a1+b1+p)mod(10);
p:=(a1+b1+p)div(10);
c:=chr(c1+ord('0'))+c;
end;
if p>0
then
c:=chr(p+ord('0'))+c;
end;



procedure mul(a,b:string;
z,j,x,y,n,k,p,i:integer; var c:string);
begin
delete(c,1,255);
z:=0;
x:=0;
y:=0;
p:=0;
n:=length(a);
k:=length(b);
for i:=1 to n+k do
c:=c+'0';
for i:=k downto 1 do
begin
p:=0;
y:=ord(b[i])-ord('0');
for j:=n downto 1 do
begin
x:=ord(a[j])-ord('0');
z:=x*y+p+ord(c[i+j])-ord('0');
p:=(z)div(10);
c[i+j]:=chr((z mod 10)+ord('0'));
end;
end;
if c[1]='0' then delete(c,1,1);
end;



procedure del(a:string; n,i,p:integer; var c:string);
begin
delete(c,1,255);
p:=0;
n:=length(a);
for i:=1 to n do
begin
c:=c+chr( (ord(a[i])-ord('0')+10*p) div(6)+ord('0'));
p:=(ord(a[i])-ord('0'))mod(6);
end;
if c[1]='0' then delete(c,1,1);
end;



begin
assign(input,'input.pas');
reset(input);
assign(output,'output.pas');
rewrite(output);
readln®;
readln(g);
a:=r;
b:=g;
sum(a,b,n,k,i,a1,b1,c1,p,c);
a:=c;
b:=r;
mul(a,b,z,j,x,y,n,k,p,i,c);
l:=c;
a:=r;
b:=r;
sum(a,b,n,k,i,a1,b1,c1,p,c);
a:=c;
b:=g;
sum(a,b,n,k,i,a1,b1,c1,p,c);
a:=c;
b:=l;
mul(a,b,z,j,x,y,n,k,p,i,c);
del(a,n,i,p,c);
writeln©;
close(input);
close(output);

end.

ввести надо:
r=20000;
g=1;
мож у меня паскаль левый...?

Сообщение отредактировано: klem4 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


както не стыкуется
Цитата
вобщем найти (n*(n+1)*(2*n+1))/6
и
Цитата
ввести надо:
r=20000;
g=1;

по заданию так..
var n:comp;
begin
readln(n);
n:=(n*(n+1)*(2*n+1)) / 6;
writeln(n);
readln;
read;
end.


Цитата
мож у меня паскаль левый...?
этого тут не кто не знает smile.gif

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Вова

Репутация: -  0  +


Цитата(compiler @ 19.05.2007 22:01) *

както не стыкуетсяи
по заданию так..
var n:comp;
begin
readln(n);
n:=(n*(n+1)*(2*n+1)) / 6;
writeln(n);
readln;
read;
end.


этого тут не кто не знает smile.gif

ну я же говорю, что задача на длинную арифметику...если я введу туда большое число, то не будет работать. поэтому вариант "n:=(n*(n+1)*(2*n+1)) / 6;
writeln(n);
отпадаетsmile.gif...
Люди...может кто-нибуь просто запустить то. что я написали сказать что выдает.
если написать :
3
1
и он выдаст 14, то работает правильно и нужно ввести значения:
200000
1
и вот мне ответ нужен...помогите плиииз!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


если у тебя порядковые типы то знай
в LongInt Диапазон значений -2 147 483 648... +2 147 483 647
тебе мало? это не самая длинная арифметика


для 200000 получаем 170499978...



--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 17:08
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name