标签:des style blog http color java os io
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 60 Accepted Submission(s): 30
1 #include<iostream> 2 #include<cstring> 3 #include<cstdlib> 4 #include<cstdio> 5 #include<algorithm> 6 #include<cmath> 7 #include<queue> 8 #include<map> 9 10 #define N 100005 11 #define M 15 12 #define mod 1000000007 13 #define mod2 100000000 14 #define ll long long 15 #define maxi(a,b) (a)>(b)? (a) : (b) 16 #define mini(a,b) (a)<(b)? (a) : (b) 17 18 using namespace std; 19 20 int n; 21 ll a[N],b[N],c[N]; 22 int vis[N]; 23 ll ans; 24 25 int main() 26 { 27 int i; 28 // freopen("data.in","r",stdin); 29 //scanf("%d",&T); 30 //for(int cnt=1;cnt<=T;cnt++) 31 //while(T--) 32 while(scanf("%d",&n)!=EOF) 33 { 34 if(n==0) break; 35 ans=0; 36 memset(b,0,sizeof(b)); 37 memset(c,0,sizeof(c)); 38 memset(vis,0,sizeof(vis)); 39 for(i=1;i<=n;i++){ 40 scanf("%I64d",&a[i]); 41 } 42 43 vis[ a[1] ]=1; 44 for(i=2;i<=n;i++){ 45 for(ll j=1;j*j<=a[i];j++){ 46 if(a[i]%j!=0) continue; 47 if(vis[j]!=0){ 48 b[ vis[j] ]=a[i]; 49 vis[j]=0; 50 } 51 ll te=a[i]/j; 52 if(vis[te]!=0){ 53 b[ vis[te] ]=a[i]; 54 vis[te]=0; 55 } 56 } 57 vis[ a[i] ]=i; 58 } 59 60 61 for(i=1;i<=n;i++){ 62 if(b[i]==0) b[i]=a[i]; 63 } 64 65 memset(vis,0,sizeof(vis)); 66 vis[ a[n] ]=n; 67 for(i=n-1;i>=1;i--){ 68 for(ll j=1;j*j<=a[i];j++){ 69 if(a[i]%j!=0) continue; 70 if(vis[j]!=0){ 71 c[ vis[j] ]=a[i]; 72 vis[j]=0; 73 } 74 ll te=a[i]/j; 75 if(vis[te]!=0){ 76 c[ vis[te] ]=a[i]; 77 vis[te]=0; 78 } 79 } 80 vis[ a[i] ]=i; 81 } 82 83 for(i=1;i<=n;i++){ 84 if(c[i]==0) c[i]=a[i]; 85 } 86 87 for(i=1;i<=n;i++){ 88 ans+=b[i]*c[i]; 89 } 90 printf("%I64d\n",ans); 91 92 } 93 94 return 0; 95 }
hdu 4961 数论 o(nlogn),布布扣,bubuko.com
标签:des style blog http color java os io
原文地址:http://www.cnblogs.com/njczy2010/p/3922806.html