Pagini recente » Cod sursa (job #3237385) | Cod sursa (job #1848413) | Cod sursa (job #1027444) | Cod sursa (job #890660) | Cod sursa (job #995288)
Cod sursa(job #995288)
#include<fstream>
using namespace std;
ifstream in("pairs.in");
ofstream out("pairs.out");
const int M = 1000005;
int n,stor[M];
int acc,cur[10],v[10],prod[10];
int add,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){
for(v[i]=v[i-1]+1;v[i]<=cur[0];v[i]++){
prod[i]=prod[i-1]*cur[v[i]];
add+=operate(semn(i),prod[i-1]*cur[v[i]]);
if(i<cur[0]) back(i+1);
}
}
int main(){
prod[0]=1;
in>>n;
for(int i=1;i<=n;i++){
in>>acc;
cur[0]=0;
int j=2;
while(acc>1){
if(acc%j==0){
cur[++cur[0]]=j;
while(acc%j==0) acc/=j;
}
j++;
}
//for(int j=1;j<=cur[0];j++) out<<cur[j]<<' ';
add=i-1;
back(1);
sum+=add;
}
out<<sum;
return 0;
}