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

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> задача на С, вычисление...
Слава
сообщение 12.09.2006 17:52
Сообщение #1


Гость






Здравствуйте.
Помогите решить задачу на С.
Напечатать в порядке возрастания N чисел вида 2^i* 3^j*5^k. (^ степень, * умножение)
Заранее благодарю
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
klem4
сообщение 12.09.2006 18:04
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Условие задачи приведено полностью ? Что то мне подсказывает что нет, ибо решение в таком случае более чем простое ...



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 12.09.2006 18:53
Сообщение #3


Гость






да задача такая - поясни пожалуйста решение
 К началу страницы 
+ Ответить 
klem4
сообщение 12.09.2006 18:59
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Прошу прощения, я был не прав, с заданием все в порядке. Хотя ... Ну вот посмотри, такой вариант тебя устроит ?)) Мне кажется врядли ;) Хотя задание выполнено smile.gif


# include <iostream.h>

int main(void) 
{
	// допустим j = 0; k = 0; -> 3^0 = 1; 5^0 = 1;
	
	for (int i = 0; i < 30; i++) cout << (int)(pow(2, i)) << endl; // 2^i* 3^j* 5^k;
	return 0;
}



Другое дело, если бы в уcловие было сказано первые N идущих в порядке возрастания ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 12.09.2006 21:56
Сообщение #5


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

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


Цитата(klem4 @ 12.09.2006 18:59) *

Другое дело, если бы в уcловие было сказано первые N идущих в порядке возрастания ...


Похоже, именно такой вариант имелся ввиду.


#include <iostream>
#include <set>

using namespace std;

set <int> s;

int main()
{
  int n;
  cin >> n;
  
  s.insert(1); // 2^0 * 3^0 * 5^0
 
  for (int i = 0; i < n; ++i)
  {
	int v = *s.begin();
	s.erase(s.begin());
	s.insert(v * 2);
	s.insert(v * 3);
	s.insert(v * 5);

	cout << v << endl;
  }				   
}

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.09.2006 22:08
Сообщение #6


Гость






Michael_Rybak, насколько я вижу задание - речи идет о C, а никак не о С++ ...

"Поспешность нужна только при ловле блох" (С) Козьма Прутков

klem4, тебя это тоже касается...
 К началу страницы 
+ Ответить 
klem4
сообщение 13.09.2006 19:00
Сообщение #7


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Виноват, вот на Си версия, немного громоздкая ...


# include <stdio.h>
# include <conio.h>
# include <stdlib.h>

void GetSequence(int n)
{
	int d[] = {2, 3, 5};
	
	int next = 0;
	int count = 0;
	
	do
	{
		int temp = ++next;
		
		int badCount = 0;
		
		while ((temp > 1) && (badCount < 3))
		{
			
			while ((temp > 1) && (badCount < 3))
			{
				badCount = 0;
				
				for (int i = 0; i < 3; i++)
					if (temp % d[i] == 0)
					{
						temp = temp / d[i];
						break;
					}
					else
						badCount++;
			}
		}
		
		if (badCount < 3)
		{
			printf("%d\n", next);
			count++;
		}
		
	} while (count < n);
}

int main(void)
{
	int n;
	
	printf("n = "); scanf("%d", &n);
	
	GetSequence(n);
	
	return 0;
}


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

- Текстовая версия 1.08.2025 19:43
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"