1. 程式人生 > >牛客練習賽29 F 算式子

牛客練習賽29 F 算式子

++ https 變化 coder 合並 const acm tps 值變化

https://www.nowcoder.com/acm/contest/211/F

經典題。

1.分區間

2.向下取整的值變化 & 合並相同值

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 const ll mod=1e9+7;
 5 const int maxn=2e6+10;
 6 
 7 ll tot[maxn<<1],f[maxn],g[maxn],add[maxn],ans=0,r;
 8 
 9 int main()
10 {
11     int
n,m,a,x,y,i,j; 12 scanf("%d%d",&n,&m); 13 for (i=1;i<=n;i++) 14 { 15 scanf("%d",&a); 16 g[a]++; 17 } 18 for (i=1;i<=m<<1;i++) 19 tot[i]=tot[i-1]+g[i]; 20 for (i=1;i<=m;i++) 21 if (g[i]) 22 { 23 for
(j=i;j<=m;j+=i) 24 add[j]+=g[i]; 25 } 26 for (i=1;i<=m;i++) 27 { 28 for (j=1,x=i-1,y=i+i-1;x<=m;j++,x+=i,y+=i) 29 f[i]+=(tot[y]-tot[x])*j; 30 ans+=add[i]; 31 f[i]+=ans; 32 } 33 r=0; 34 for (i=1;i<=m;i++) 35 r=r^f[i];
36 cout<<r; 37 return 0; 38 } 39 /* 40 3 3 41 1 2 3 42 43 */

牛客練習賽29 F 算式子