Cod sursa(job #245095)

Utilizator QuantumEduard Lataretu Quantum Data 16 ianuarie 2009 19:22:09
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
using namespace std;
typedef long stiva[100];

int as,ev;
long n,k,nr=0;
stiva s;
fstream fout("fractii.out",ios::out);

int cmmdc(long a, long b) {
	int r;
	do{
		r=a%b;
		a=b;
		b=r;
	} while (r!=0);
	return a;
}

void init(){s[k]=0;}
int succesor() {if(s[k]<n){s[k]=s[k]+1;return 1;} return 0;}
int valid() {
	for(int i=1;i<k;i++) {
		if(s[k]==s[i]) return 0;
		if(cmmdc(s[k],s[i])!=1) return 0;
	} return 1;
}
int solutie(){return k==2;}
void tipar() {
	//for(int i=1;i<=k;i++) fout<<s[i]<<" ";
	nr++;
	//fout<<"\n";
}
void bt() {
k=1; init();
while(k>0) {
	do{
		as=succesor();
		if(as)ev=valid();
	} while(as && !ev);
	if(as)	if(solutie())tipar();
			else {k++;init();}
	else k--;
}
}
int main () {
	fstream fin("fractii.in",ios::in);
	fin>>n;
	fin.close();
	bt();
	fout<<nr+1<<"\n";
	fout.close();
	return 0;
}