Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters > Algorithms
Register

Reply
 
LinkBack Thread Tools
Old 28.05.2005, 15:09   #1
Optimist
 
Vazgen Abgaryan's Avatar
 
Join Date: 10 2001
Location: Yerevan
Posts: 712
Downloads: 6
Uploads: 0
Reputation: 53 | 4
Default Задача, помогите плиз!

Плиз, помогите написать сдел. задачу на С++ . Алгоритм мне ясен, но прогу написать не получается.
Для заданных a,b,p натуральных чисел вычислить произведение всех тех натуральных чисел, принадлежащих промежутку [a,b], в p-ичном (кодировка) представлении которых нет повторяющихся цифр.
Спасибо
Reply With Quote
Old 28.05.2005, 18:15   #2
Untouchable misanthrope
 
AvDav's Avatar
 
Join Date: 07 2004
Location: Pure thoughts
Age: 36
Posts: 3,408
Downloads: 22
Uploads: 0
Reputation: 222 | 3
Default

Держи..тока работает при р=2-10.
Code:
#include <iostream>
#include <cassert>
#include <vector>

template <class uint=unsigned int> 
bool proc(uint a, uint b, uint &out, unsigned char rdx=10)
{
	assert(1<rdx && rdx<=10 && a<b);

	out=1;
	bool gotcha, found=false;

	for(uint tmp, dig; a<=b; ++a)
	{
		tmp=a;
		gotcha=true;
		std::vector<bool> preds(rdx, false);
		do 
		{
			dig=tmp%rdx;
			if(preds[dig]) 
			{
				gotcha=false; 
				break;
			} 
			else preds[dig]=true;
		}
		while(tmp/=rdx);
		if(gotcha) std::cout << a << std::endl, out*=a, found=true;
	}

	return found;
}

int main()
{
	unsigned int mult;
	proc(1u, 9u, mult, 3);
	std::cout << "Mult = " << mult << std::endl;

	return 0;
}
Reply With Quote
Old 28.05.2005, 20:53   #3
Optimist
 
Vazgen Abgaryan's Avatar
 
Join Date: 10 2001
Location: Yerevan
Posts: 712
Downloads: 6
Uploads: 0
Reputation: 53 | 4
Default

Thanks a lot!
Завтра попробую разобраться. Я не программер и далёк от этого и не имею представления о Vector-ax, но спасибо большое! Попробую разобраться
Thanks again
Reply With Quote
Old 02.06.2005, 07:21   #4
★★★★★★★★★★★★★
 
Hrach_Techie's Avatar
 
Join Date: 08 2004
Location: London, UK
Age: 38
Posts: 16,531
Downloads: 8
Uploads: 0
Reputation: 482 | 6
Question a newbie query: the optimal way to solve

не хотелось открывать новый топик ... вобщем вот она задача - я решил её хотелось бы знать как можно было лучше её написать по вашему

Quote:

// This program takes 5digit number && checks if it's palindrome


#include <iostream>

using namespace std;


bool isPalindrome(int& source)





{
if(source < 10000 || source >99999) //check if 5 digit
return false;




int i = source % 10; //check last num


int j = source % 100 /10; // check penultimate num
int m1 = 10 * i + j;
int m2 = source / 1000;
if (m1 == m2)
return true;
return false;



}

void main ()










{
int source = 0;


cout<<"input 5 digit number"<<endl;
cin>>source;
if(isPalindrome(source))



{


cout<<"The number is palindrome";






}


else






{


cout<<"The number is not palindrome";






}
}

Last edited by Hrach_Techie; 02.06.2005 at 07:39.
Reply With Quote
Old 02.06.2005, 11:59   #5
RAU
 
Join Date: 06 2005
Location: Yerevan
Age: 29
Posts: 2
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Code:
#include <iostream>
using namespace std;
void main ()
{
	int source = 0;
	cout<<"input 5 digit number"<<endl;
	cin>>source;
	if (source>9999 && source<100000 && (source/1000==(source%10)*10+(source/10)%10))
		cout<<"The number is palindrome" << endl;
		  else
			cout<<"The number is not palindrome" << endl;
}
Reply With Quote
Old 02.06.2005, 12:23   #6
★★★★★★★★★★★★★
 
Hrach_Techie's Avatar
 
Join Date: 08 2004
Location: London, UK
Age: 38
Posts: 16,531
Downloads: 8
Uploads: 0
Reputation: 482 | 6
Default

тоже красивое решение ... тока наскока правильно или красиво загромождать всем этим main? вот так решил её один наш общий знакомый (не буду называть имени)

Quote:
#include <iostream>
using namespace std;
void main()
{
bool reply = false;
int num;
cin >> num;
if (num % 10 == num / 10000) {
num %= 10000;
num /= 10;
reply = num % 10 == num / 100;
}
cout << "\t - is" << (reply ? " " : " not ") << "a palindrome\n\n";
}
тоже красиво - но всё таки всё это можно вне main делать ...
Reply With Quote
Old 02.06.2005, 13:15   #7
Moderator
 
Gates's Avatar
 
Join Date: 02 2002
Location: Armenia
Age: 37
Posts: 5,226
Downloads: 0
Uploads: 0
Reputation: 262 | 5
Default

Hrach, neuzheli v programmeri podalsja?
Reply With Quote
Old 02.06.2005, 14:41   #8
Optimist
 
Vazgen Abgaryan's Avatar
 
Join Date: 10 2001
Location: Yerevan
Posts: 712
Downloads: 6
Uploads: 0
Reputation: 53 | 4
Default

Pechatayet perviye polindrom chisla dlya dannogo chisla m
Code:
#include<iostream.h>
int pol(int);
void main() {
int m;
cout<<"Enter m \n";
cin>>m;
for(int i=10; i<=m; i++) if(pol(i)) cout<<i<<" "; }
int pol(int x) {
int s=0,t=x;
while(x) { s=s*10+ x%10; x=x/10; }
return s==t; }
Reply With Quote
Old 02.06.2005, 15:19   #9
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 35
Posts: 21,717
Downloads: 2
Uploads: 0
Reputation: 250 | 7
Default

Люди пишущие void main достойны лишь ушата презрения.
Reply With Quote
Old 02.06.2005, 15:36   #10
★★★★★★★★★★★★★
 
Hrach_Techie's Avatar
 
Join Date: 08 2004
Location: London, UK
Age: 38
Posts: 16,531
Downloads: 8
Uploads: 0
Reputation: 482 | 6
Default

Боится презрения лишь тот кто его заслуживает / а сам бы как решил?
Reply With Quote
Old 02.06.2005, 18:43   #11
Optimist
 
Vazgen Abgaryan's Avatar
 
Join Date: 10 2001
Location: Yerevan
Posts: 712
Downloads: 6
Uploads: 0
Reputation: 53 | 4
Default

Quote:
Originally Posted by Agregat
Люди пишущие void main достойны лишь ушата презрения.
Друг скажи ламмеру- экономисту, какая разница как писать? void main() {
ili main() {
return 0;
???????
Мне с++ не нужен и поэтому мне без разницы как писать- главное, чтоб работало
Reply With Quote
Old 02.06.2005, 18:52   #12
скромный VIP
 
analyst's Avatar
 
Join Date: 06 2003
Location: Yerevan
Age: 30
Posts: 960
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Да Агреагат, ты прав, но с другой строны, пусакй маздайка сама догадается корректно ли завершилась программа или нет..Пускай подумает немножко чтоль...

п.с А к глобальной переменной придраться не хочешь?
Reply With Quote
Old 02.06.2005, 18:59   #13
Optimist
 
Vazgen Abgaryan's Avatar
 
Join Date: 10 2001
Location: Yerevan
Posts: 712
Downloads: 6
Uploads: 0
Reputation: 53 | 4
Default

Analyst: Ok, sorry didn`t know what that was

Last edited by Vazgen Abgaryan; 02.06.2005 at 19:26.
Reply With Quote
Old 03.06.2005, 04:48   #14
панаехавший
 
Obelix's Avatar
 
Join Date: 06 2003
Location: форпост
Age: 30
Posts: 4,007
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Quote:
Originally Posted by Vazgen Abgaryan
Друг скажи ламмеру- экономисту, какая разница как писать? void main() {
ili main() {
return 0;
???????
Zhor ba da qez petq a?
Reply With Quote
Old 03.06.2005, 14:34   #15
★★★★★★★★★★★★★
 
Hrach_Techie's Avatar
 
Join Date: 08 2004
Location: London, UK
Age: 38
Posts: 16,531
Downloads: 8
Uploads: 0
Reputation: 482 | 6
Default

Quote:
Originally Posted by Vazgen Abgaryan
Друг скажи ламмеру- экономисту, какая разница
разница лишь в том что экономистов много а хороших программистов мало ... не в обиду но хорошо что ты экономист ...
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 19:44.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.