Pagini recente » Cod sursa (job #104060) | Cod sursa (job #552698) | Cod sursa (job #1530132) | Cod sursa (job #143729) | Cod sursa (job #995263)
Cod sursa(job #995263)
#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;
}