Cod sursa(job #995263)

Utilizator teoionescuIonescu Teodor teoionescu Data 8 septembrie 2013 14:49:19
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
using namespace std;
ifstream in("pairs.in");
ofstream out("pairs.out");
const int M = 1000005;
int n,stor[M],acc,cur[10],v[10],adding,sum;
int semn(int i){
	if(i%2==0) return 1;
	return -1;
}
int operate(int s,int x){
	int ras=s*stor[x];
	stor[x]++;
	return ras;
}
void back(int i){
	int p;
	for(v[i]=v[i-1]+1;v[i]<=cur[0];v[i]++){
		p=1;
		for(int j=1;j<=i;j++) p*=cur[v[j]];
		adding+=operate(semn(i),p);
		if(i<cur[0]) back(i+1);
	}
}
int main(){
	in>>n;
	for(int i=1;i<=n;i++){
		in>>acc;
		cur[0]=0;
		int j=2;
		while(acc!=1 && j<acc/2){
			if(acc%j==0){
				cur[++cur[0]]=j;
				while(acc%j==0) acc/=j;
			}
			j++;
		}
		if(acc>1) cur[++cur[0]]=acc;
		for(int j=1;j<=cur[0];j++){
			//out<<cur[j]<<' ';
		}
		adding=i-1;
		back(1);
		sum+=adding;
	}
	out<<sum;
	return 0;
}