分析:筛法的思想,首先记录每个值的坐标,在使用筛法。
#include<iostream> using namespace std; int a[10005]; int f[10005]; int main() { int i,n,j,mx,ans,tmp; ios::sync_with_stdio(false); while(cin>>n) { mx=-1; memset(f,-1,sizeof(f)); for(i=1;i<=n;i++) { cin>>a[i]; mx=mx>a[i]?mx:a[i]; f[a[i]]=i; //记录索引 } ans=0; for(i=1;i<=n;i++) { tmp=1000005; for(j=a[i]+a[i];j<=mx;j+=a[i]) if(f[j]!=-1 && f[j]>i) //注意索引必须f[j]>i。 tmp=tmp<f[j]?tmp:f[j]; if(tmp!=1000005) ans+=tmp; } cout<<ans<<endl; } return 0; }
原文地址:http://blog.csdn.net/a809146548/article/details/45643315