Перейти к содержимому

Фотография

Основы ПрограмированияПотренируемся на ночь?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 171

#21
meir

meir
  • Частый гость
  • 81 сообщений
#include<iostream>
using namespace std;
main(){
int a,b;
cin>>a>>b;
//a is left border of the sequence
//b is right border of the sequence
int result=(b*(b+1)-a*(a-1))>>1;
cout<<"The sum of sequence ["<<a<<".."<<b<<"] equals "<<result;
if(result!=100){
cout<<" and is ";
if(result>100)cout<<"greater";
else if(result<100)cout<<"less";
cout<<" than 100";
}
}

Сам не комилировал, но вроде работать должна

Сообщение отредактировал meir: 31.07.2005, 16:43:34

  • 0

#22
голкипер

голкипер
  • Гость
  • 27 сообщений
^)))
Наверное самый спокойный человек, просто взял и написал, вот это другое дело:)))
  • 0

#23
Rus++

Rus++
  • Завсегдатай
  • 106 сообщений
гы, интересно, то что я написал никто не заметил :eek: у нас что, никто ни на чем кроме как на процедурных и OO языках писать не умеет?

Печально...
  • 0

#24
meir

meir
  • Частый гость
  • 81 сообщений

гы, интересно, то что я написал никто не заметил :) у нас что, никто ни на чем кроме как на процедурных и OO языках писать не умеет? Печально...

Твой алгоритм требует O(n) операций, а мой O(1) операций. Зачем использовать цикл, если есть формула?
  • 0

#25
Rus++

Rus++
  • Завсегдатай
  • 106 сообщений
тоже мне, rocket science. надо же принцип показать, а не эффективность формулы на таких маленьких примерах и можно показать насколько какой язык богат и эффективен.

и если ты внимательно прочитаешь условия задачи, то увидишь, что в любом решении O(1) :eek:

эффективность надо на других задачах оттачивать.

Сообщение отредактировал Rus++: 02.08.2005, 00:39:06

  • 0

#26
meir

meir
  • Частый гость
  • 81 сообщений

тоже мне, rocket science. надо же принцип показать, а не эффективность формулы на таких маленьких примерах и можно показать насколько какой язык богат и эффективен.
и если ты внимательно прочитаешь условия задачи, то увидишь, что в любом решении O(1) :)
эффективность надо на других задачах оттачивать.

Возможно, ты прав, но большинству интересно посмотреть наиболее эффективную реализацию, а не наиболее очевидную.

гы, интересно, то что я написал никто не заметил  у нас что, никто ни на чем кроме как на процедурных и OO языках писать не умеет?
Печально...

Эту задачу можно решить и bat-файлом:
@echo off
setlocal
echo Usage: sumofseq.bat first_integer right_integer
echo or just: sumofseq.bat
echo Example: sumofseq.bat 5 20
echo.
if '%1==' (echo Enter the left border of sequence:  & set /p a="")else set a=%1
if '%2==' (echo Enter the second integer: & set /p b="")else set b=%2
set /a res=(%b%*(%b%+1)-%a%*(%a%-1))/2
echo The sum of sequence [%a%..%b%] equals %res%
if %res% GTR 100 echo It is greater than 100
if %res% LSS 100 echo It is less than 100

  • 0

#27
Rus++

Rus++
  • Завсегдатай
  • 106 сообщений
ну если уровень данного форума 3(?) класс общеобразовательной школы, тады ой, зря я сюда зашел :D

с bat - это уже весело :eek: сейчас скрипты даже на bash-e стараются не писать, не то что на таком убожестве как bat.... просто сравни с руби -

s = 0
(gets().to_i() .. gets().to_i()).each { | v | s = s + v }
if s < 100
 print "less than 100\n"
else
 print "more than 100\n"
end

  • 0

#28
голкипер

голкипер
  • Гость
  • 27 сообщений

main = if sum [5..19] < 100
       then "less than 100"
       else "more than 100"


Да, хоть кто то начил нормально писать с самого начала, а то понабежали якалки, а реально написать не написали.
Все просто и понятно. Молодец.
  • 0

#29
голкипер

голкипер
  • Гость
  • 27 сообщений

ну если уровень данного форума 3(?) класс общеобразовательной школы, тады ой, зря я сюда зашел ;)

с bat - это уже весело :) сейчас скрипты даже на bash-e стараются не писать, не то что на таком убожестве как bat.... просто сравни с руби -

s = 0
(gets().to_i() .. gets().to_i()).each { | v | s = s + v }
if s < 100
 print "less than 100\n"
else
 print "more than 100\n"
end


А вот это вообще заинтересовало, классно получается)))
  • 0

#30
голкипер

голкипер
  • Гость
  • 27 сообщений
Вот написано на паскале, подскажите где или в чем моя ошибка!
примечание"Спортивный интерес!

var sum:integer; i:integer;
begin
i:=5;
sum:=0;
i:=i+1;
sum:=sum+i;
if sum<100 then
writeln(' summa <100');
readln;
else
writln(' summa >100');
readln;
end.
Так вот она не компилируется.
Вопрос если перед else нельзя ставить ; то как это реализовать по другому?
Наприме for i= от 5 до 20 или еще как?
Убедительная просьба писать только на паскале, и писать только код а не всякие неприятные высказывания.
Заранее благодарен.
  • 0

#31
v04bvs

v04bvs
  • В доску свой
  • 2 062 сообщений
var sum, i: Integer;
begin
sum := 0;
for i := 5 to 20 do sum := sum + i;
if sum < 100 then Writeln('sum < 100') else Writeln('sum >= 100');
end.
  • 0

#32
|imp|

|imp|
  • Постоялец
  • 476 сообщений


var sum, i: Integer;
begin

sum := 0;
for i := 5 to 20 do
sum := sum + i;

if sum < 100 then Writeln('sum < 100')
else Writeln('sum >= 100');
end.

Сообщение отредактировал |imp|: 05.08.2005, 12:58:23

  • 0

#33
v04bvs

v04bvs
  • В доску свой
  • 2 062 сообщений


var sum, i: Integer;
begin
sum := 0;
for i := 5 to 20 do
begin
sum := sum + i;
if sum < 100 then Writeln('sum < 100')
else Writeln('sum >= 100');
end;
end.

Чушь.
  • 0

#34
|imp|

|imp|
  • Постоялец
  • 476 сообщений


var sum, i: Integer;
begin
sum := 0;
for i := 5 to 20 do
begin
sum := sum + i;
if sum < 100 then Writeln('sum < 100')
else Writeln('sum >= 100');
end;
end.

Чушь.


Упс ошибочка !
  • 0

#35
Миха

Миха
  • В доску свой
  • 1 999 сообщений
Сумма = 0;

Для Инкримент = 5 по Инкримент = 20 Цикл
Сумма = Сумма + Инкримент;

Если Сумма >= 100 Тогда
Сообщить("Сумма больше 100");
ИначеЕсли Сумма < 100 Тогда
Сообщить("Сумма меньше 100");
КонецЕсли;

КонецЦикла;

Угадай на чем написано :) :D :lol:
  • 0

#36
v04bvs

v04bvs
  • В доску свой
  • 2 062 сообщений
[..gioner/programs/test]$ cat sum
#! /bin/sh

sum=0
for ((i=5; i<=20; i++))
do
((sum+=i))
done
echo sum=$sum
if [ $sum -gt 100 ]
then
echo "Sum > 100"
else
echo "Sum <= 100"
fi
[..gioner/programs/test]$ ./sum
sum=200
Sum > 100
[..gioner/programs/test]$
  • 0

#37
Николь_и_Кидман

Николь_и_Кидман
  • В доску свой
  • 1 389 сообщений
Задача ид области подсчетов факториалов :super:
  • 0

#38
meir

meir
  • Частый гость
  • 81 сообщений
А вот и рекурсивный метод решения этой задачи:
#include<iostream>
int sumofseq (int a,int b){
   if(a>b)return 0;
   else return b+sumofseq(a,b-1);
}
int main(){
   int a,b;
   std::cin>>a>>b;
   std::cout<<sumofseq(a,b);
}
Попробуйте ещё решить эту задачу, называется Big Mod (задача для начинающих ACM-щиков).
Input: Даны a,b,m, которые больше 0 и не больше 10.
Output: Найти (a^b) mod m, где ^ - это возведение в степень, mod - это остаток от деления (в C++ функция mod - это оператор %).
Можете объяснить алгоритм, а можете написать решение задачи.
  • 0

#39
v04bvs

v04bvs
  • В доску свой
  • 2 062 сообщений
При таких ограничениях даже думать неохота, задача решается в лоб.
[..gioner/programs/test]$ cat bigmod.cc
#include <iostream>

using namespace std;

int main ()
{
int a, b, m;
long long result;
cout << "Enter a, b, m -> ";
cin >> a >> b >> m;
result = 1;
for (; b > 0; b--) result *= a;
cout << "(a^b)%m = " << result % m << endl;
return 0;
}

Давайте 10 заменим на 1000
  • 0

#40
meir

meir
  • Частый гость
  • 81 сообщений
Вот, исправил условия задачи (просто, честно сказать, не помню, какие ограничения были в этой задаче, поэтому пусть будет 50):

Попробуйте ещё решить эту задачу, называется Big Mod (задача для начинающих ACM-щиков).
Input: Даны a,b,m, которые больше 0 и не больше 50.
Output: Найти (a^b) mod m, где ^ - это возведение в степень, mod - это остаток от деления (в C++ функция mod - это оператор %, в Pascal - не знаю).
Можете объяснить алгоритм, а можете написать решение задачи.
  • 0


Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.