AOE还是单体?
![](https://www.nowcoder.com/equation?tex=%E8%B4%AA%E5%BF%83%EF%BC%8C%E5%BD%93%E8%83%BD%E8%8A%B1%E8%B4%B9x%E8%80%8C%E9%80%A0%E6%88%90%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8Ex%E7%82%B9%E4%BC%A4%E5%AE%B3%E6%97%B6%EF%BC%8C%E4%BC%98%E5%85%88%E9%80%89%E6%8B%A9%E7%BE%A4%E4%BD%93%E6%94%BB%E5%87%BB&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%BD%93%E5%89%A9%E4%BD%99%E5%AD%98%E6%B4%BB%E7%9A%84%E4%B8%AA%E6%95%B0%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8Ex%E5%B0%B1%E8%83%BD%E9%80%A0%E6%88%90%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8Ex%E7%82%B9%E4%BC%A4%E5%AE%B3&preview=true)
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
const int N = 2e5 + 10;
typedef long long ll;
ll n,x;
ll a[N],mx;
int main(){
scanf("%lld%lld",&n,&x);
for(int i = 1;i <= n;i++){
scanf("%lld",a+i);
}
sort(a,a+n);
ll k = n - x;
if(k <= 0) k = 0;
else k = a[k];
ll ans = k*x;
for(int i = 1;i <= n;i++){
a[i] -= k;
if(a[i] > 0) ans += a[i];
}
printf("%lld\n",ans);
return 0;
}
k-size字符串
![](https://www.nowcoder.com/equation?tex=%E5%B0%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%86%85%E8%BF%9E%E7%BB%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E7%9C%8B%E6%88%90%E4%B8%80%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97&preview=true)
![](https://www.nowcoder.com/equation?tex=%E8%82%AF%E5%AE%9A%E6%98%AF%E6%9C%89k%2F2%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97%E6%98%AFa%E7%9A%84%EF%BC%8Ck-k%2F2%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97%E6%98%AFb%E7%9A%84&preview=true)
![](https://www.nowcoder.com/equation?tex=%E6%88%96%E8%80%85%EF%BC%8Ck%2F2%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97%E6%98%AFb%E7%9A%84%EF%BC%8Ck-k%2F2%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97%E6%98%AFa%E7%9A%84&preview=true)
![](https://www.nowcoder.com/equation?tex=%E4%B8%8D%E4%BC%9A%E5%87%BA%E7%8E%B0%E5%85%B6%E4%BB%96%E6%83%85%E5%86%B5%EF%BC%8C%E5%9B%A0%E4%B8%BA%E5%BF%85%E9%A1%BB%E6%98%AF%E4%B8%A4%E7%A7%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E8%BF%9E%E9%80%9A%E5%9D%97%E9%97%B4%E9%9A%94%E5%9C%B0%E6%94%BE%E7%BD%AE&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%90%A6%E5%88%99%E4%B8%A4%E4%B8%AA%E7%9B%B8%E5%90%8C%E8%BF%9E%E9%80%9A%E5%9D%97%E4%BC%9A%E8%BF%9E%E6%88%90%E4%B8%80%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97%EF%BC%8C&preview=true)
![](https://www.nowcoder.com/equation?tex=%E6%89%80%E4%BB%A5%E4%B8%80%E7%A7%8D%E6%95%B0%E9%87%8F%E6%98%AFcnt1%20%3D%20k%2F2%EF%BC%8C%E5%8F%A6%E5%A4%96%E4%B8%80%E7%A7%8D%E6%98%AFcnt2%20%3D%20k%20-%20k%2F2&preview=true)
![](https://www.nowcoder.com/equation?tex=cnt2%20%3E%3D%20cnt1%2C%E5%9B%A0%E6%AD%A4%E7%AC%AC%E4%B8%80%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97%E7%9A%84%E6%95%B0%E9%87%8F%E5%8F%AA%E8%83%BD%E6%98%AFcnt2&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%88%86%E4%B8%A4%E7%A7%8D%EF%BC%9A&preview=true)
![](https://www.nowcoder.com/equation?tex=%E2%91%A0%20%E6%98%AFb%E5%88%86%E6%88%90%E4%BA%86cnt2%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97%EF%BC%9A&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%B0%B1%E6%98%AFC(n%20-%201%2Ccnt1%20-%201)%20*%20C(m%20-%201%2Ccnt2%20-%201)&preview=true)
![](https://www.nowcoder.com/equation?tex=%E2%91%A1%20%E6%98%AFa%E5%88%86%E6%88%90%E4%BA%86cnt2%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%B0%B1%E6%98%AFC(n-1%2Ccnt2-1)%20*%20C(m%20-%201%2Ccnt1%20-%201)&preview=true)
![](https://www.nowcoder.com/equation?tex=%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9C%89%E8%BF%99%E4%B8%AA%E5%BC%8F%E5%AD%90%EF%BC%9F&preview=true)
![](https://www.nowcoder.com/equation?tex=C(n-1%2Ccnt1-1)%E6%98%AF%E5%B0%86n%E5%88%86%E6%88%90cnt1%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97%E7%9A%84%E6%96%B9%E6%A1%88%EF%BC%8C%E7%9B%B8%E5%BD%93%E4%BA%8E%E6%9C%89n%E4%B8%AA1%EF%BC%8Cn-1%E4%B8%AA%E9%97%B4%E9%9A%94&preview=true)
![](https://www.nowcoder.com/equation?tex=%E7%BB%99%E4%BD%A0%E6%94%BEcnt1-1%E4%B8%AA%E9%9A%94%E6%9D%BF%E5%B0%86%E5%AE%83%E4%BB%AC%E5%88%86%E6%88%90cnt1%E4%B8%AA%E6%95%B0&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%90%8C%E7%90%86C(m-1%2Ccnt2-1)%E6%98%AF%E5%B0%86m%E5%88%86%E6%88%90cnt2%E4%B8%AA%E8%BF%9E%E9%80%9A%E5%9D%97%E7%9A%84%E6%96%B9%E6%B3%95&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%88%86%E5%A5%BD%E5%90%8E%E6%8E%92%E5%88%97%EF%BC%8C%E4%BD%86%E6%98%AF%E5%8F%AA%E8%83%BDcnt2%E7%9A%84%E6%94%BE%E7%AC%AC%E4%B8%80%E4%B8%AA%E7%84%B6%E5%90%8E%E6%94%BEcnt1%E7%9A%84%E5%86%8D%E6%94%BEcnt2...&preview=true)
![](https://www.nowcoder.com/equation?tex=%E6%89%80%E6%9C%89%E6%98%AFC(n%20-%201%2Ccnt1%20-%201)%20*%20C(m%20-%201%2Ccnt2%20-%201)&preview=true)
#include <cstdio>
#include <iostream>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
const int N = 1e5;
ll fac[N + 10],facInv[N + 10];
ll qpow(ll a,ll b){
ll res = 1;
while(b){
if(b&1) res = res * a % mod;
a = a * a % mod;
b >>= 1;
}
return res;
}
ll inv(ll x){
return qpow(x,mod-2);
}
void init(){
fac[0] = 1;
for(int i = 1;i <= N;i++){
fac[i] = fac[i - 1] * i % mod;
}
facInv[N] = inv(fac[N]);
for(int i = N - 1;i >= 0;i--){
facInv[i] = facInv[i+1] * (i+1) % mod;
}
}
ll C(int n,int m){
if(m < 0 || m > n) return 0;
return (fac[n] * facInv[m] % mod ) * facInv[n-m] % mod;
}
int n,m,k;
int main(){
init();
scanf("%d%d%d",&n,&m,&k);
int cnt1 = k/2,cnt2 = k - k/2;
ll ans = C(n - 1,cnt1 - 1) * C(m - 1,cnt2 - 1) % mod;
swap(n,m);
ans = (ans + C(n - 1,cnt1 - 1)*C(m - 1,cnt2 - 1) % mod) % mod;
printf("%lld\n",ans);
return 0;
}
白魔法师
![](https://www.nowcoder.com/equation?tex=%E5%B9%B6%E6%9F%A5%E9%9B%86%EF%BC%8C%E5%B0%86%E7%9B%B8%E9%82%BB%E7%9A%84%E7%99%BD%E7%82%B9%E5%BB%BA%E8%BE%B9%EF%BC%8C%E7%BB%B4%E6%8A%A4%E6%AF%8F%E4%B8%AA%E7%99%BD%E7%82%B9%E6%89%80%E5%9C%A8%E9%9B%86%E5%90%88%E7%9A%84%E5%A4%A7%E5%B0%8F%EF%BC%9B&preview=true)
![](https://www.nowcoder.com/equation?tex=%E7%AD%94%E6%A1%88%E5%8F%AF%E8%83%BD%E7%94%B1%E4%B8%A4%E7%A7%8D%E6%9D%A5%E6%BA%90%EF%BC%9A&preview=true)
![](https://www.nowcoder.com/equation?tex=%E2%91%A0%20%E4%B8%8D%E7%94%A8%E9%80%9A%E8%BF%87%E6%96%BD%E6%B3%95%E5%BE%97%E5%88%B0%EF%BC%8C%E5%8D%B3%E7%99%BD%E7%82%B9%E9%9B%86%E5%90%88%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC%EF%BC%9B&preview=true)
![](https://www.nowcoder.com/equation?tex=%E2%91%A1%20%E9%80%9A%E8%BF%87%E6%96%BD%E6%B3%95%E5%BE%97%E5%88%B0%EF%BC%8C%E6%9E%9A%E4%B8%BE%E6%AF%8F%E4%B8%AA%E9%BB%91%E7%82%B9%EF%BC%8C%E8%AF%A5%E9%BB%91%E7%82%B9%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E7%9A%84%E7%99%BD%E7%82%B9%E9%9B%86%E5%90%88%E5%A4%A7%E5%B0%8F%E4%B9%8B%E5%92%8C%2B1&preview=true)
#include <cstdio>
#include <vector>
using namespace std;
const int N = 1e5 + 10;
vector<int> G[N];
int n,fa[N],sz[N];
char s[N];
int find(int x){
return fa[x] == x?x:fa[x] = find(fa[x]);
}
void merge(int x,int y){
int fx = find(x),fy = find(y);
if(fx != fy){
fa[fy] = fx;
sz[fx] += sz[fy];
}
}
int main(){
scanf("%d%s",&n,s + 1);
for(int i = 1;i <= n;i++) fa[i] = i,sz[i] = 1;
for(int i = 1,u,v;i < n;i++){
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
if(s[u] == s[v] && s[u] == 'W') merge(u,v);
}
int mx = 0;
for(int u = 1;u <= n;u++){
int res = 1;
if(s[u] == 'W') res = sz[find(u)];
else{
for(int i = 0;i < G[u].size();i++){
int v = G[u][i];
if(s[v] == 'W') res += sz[find(v)];
}
}
mx = max(res,mx);
}
printf("%d\n",mx);
return 0;
}
抽卡
![](https://www.nowcoder.com/equation?tex=%E7%AE%97%E5%8F%8D%E9%9D%A2%EF%BC%8C%E7%AE%97%E6%8A%BD%E4%B8%8D%E5%88%B0%E8%87%AA%E5%B7%B1%E6%83%B3%E8%A6%81%E7%9A%84%E5%8D%A1%E7%9A%84%E6%A6%82%E7%8E%87p_i&preview=true)
![](https://www.nowcoder.com/equation?tex=%E6%9C%80%E5%90%8E%E7%AD%94%E6%A1%88%E4%B8%BA1-p_i%EF%BC%8C%E5%9C%A8%E5%8F%96%E6%A8%A1%E6%84%8F%E4%B9%89%E4%B8%8B%E6%98%AF(1%20-%20p_i%20%2B%20mod)%20%5C%25%20mod&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%9C%A8%E7%AC%ACi%E4%B8%AA%E5%8D%A1%E6%B1%A0%E6%8A%BD%E4%B8%8D%E5%88%B0%E8%87%AA%E5%B7%B1%E6%83%B3%E8%A6%81%E5%8D%A1%E7%89%87%E7%9A%84%E6%A6%82%E7%8E%87%E6%98%AFx_i%20%3D%20%5Cfrac%7Ba_i-b_i%7D%7Ba_i%7D&preview=true)
![](https://www.nowcoder.com/equation?tex=%E6%8A%BD%E5%AE%8C%E6%89%80%E6%9C%89%E5%8D%A1%E6%B1%A0%E9%83%BD%E6%8A%BD%E4%B8%8D%E5%88%B0%E8%87%AA%E5%B7%B1%E6%83%B3%E8%A6%81%E5%8D%A1%E7%89%87%E7%9A%84%E6%A6%82%E7%8E%87%EF%BC%9Ap_i%20%3D%20%5Cprod_%7Bi%3D1%7D%5En%20x_i&preview=true)
![](https://www.nowcoder.com/equation?tex=%E6%A8%A1%E4%BB%A5%E4%B8%8Bx_i%20%3D%20(a_i%20-%20b_i)%20*%20inv(a_i)&preview=true)
#include <cstdio>
using namespace std;
typedef long long ll;
const int N = 1e5+10;
const ll mod = 1e9 + 7;
ll qpow(ll a,ll b){
ll res = 1;
while(b){
if(b&1) res = res*a %mod;
a = a*a % mod;
b >>= 1;
}
return res%mod;
}
ll inv(ll x){
return qpow(x,mod-2);
}
ll a[N],b[N];
int n;
int main(){
scanf("%d",&n);
for(int i = 1;i <= n;i++) scanf("%lld",a+i);
for(int i = 1;i <= n;i++) scanf("%lld",b+i);
ll res = 1;
for(int i = 1;i <= n;i++){
res = (res * (a[i]-b[i]) % mod) * inv(a[i]) % mod;
}
res = (1 - res + mod) % mod;
printf("%lld\n",res);
return 0;
}
点击消除
![](https://www.nowcoder.com/equation?tex=%E5%BC%80%E4%B8%AA%E6%A0%88%E6%A8%A1%E6%8B%9F%EF%BC%8C%E4%B8%80%E4%B8%AA%E4%B8%AA%E5%9C%B0%E5%BE%80%E5%90%8E%E6%89%AB%E5%AD%97%E7%AC%A6%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%A0%88%E4%B8%BA%E7%A9%BA%E6%88%96%E8%80%85%E8%AF%A5%E5%AD%97%E7%AC%A6%E4%B8%8E%E5%BD%93%E5%89%8D%E6%A0%88%E9%A1%B6%E5%85%83%E7%B4%A0%E4%B8%8D%E7%9B%B8%E5%90%8C%EF%BC%9A%E7%9B%B4%E6%8E%A5%E5%85%A5%E6%A0%88&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%90%A6%E5%88%99%E4%B8%80%E7%9B%B4%E6%89%BE%E5%88%B0%E4%B8%8E%E5%BD%93%E5%89%8D%E6%A0%88%E9%A1%B6%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%97%E7%AC%A6%EF%BC%8C%E5%A6%82%E6%9E%9C%E7%9B%B8%E5%90%8C%E5%AD%97%E7%AC%A6%E4%B8%AA%E6%95%B0%E4%B8%BA%E5%81%B6%E6%95%B0%E5%B0%B1pop%E6%A0%88%E9%A1%B6%EF%BC%8C%E5%90%A6%E5%88%99%E4%BF%9D%E7%95%99&preview=true)
#include <cstdio>
#include <stack>
#include <iostream>
#include <cstring>
using namespace std;
const int N = 3e5+10;
char str[N];
struct stack{
char a[N];
int l = 0;
void push(char x){
a[++l] = x;
}
char top(){
return a[l];
}
void pop(){
l--;
}
bool empty(){
if(l > 0) return 0;
return 1;
}
}s;
int main(){
scanf("%s",str);
s.push(str[0]);
for(int i = 1;i < strlen(str);){
if(s.empty()){
s.push(str[i]);
i++;
}else if(str[i]!=s.top()){
s.push(str[i]);
i++;
}else{
char ch = s.top();
int be = i - 1,en;
do{
i++;
}while(i<strlen(str)&&str[i]==s.top());
en = i - 1;
i = en + 1;
if(( (en - be + 1)%2==0 )&&!s.empty()) s.pop();
}
}
if(s.empty()) puts("0");
else{
char ans[N];
int idx = 0;
while(!s.empty()){
ans[++idx] = s.top();
s.pop();
}
for(int i = idx;i > 0;i--){
printf("%c",ans[i]);
}
puts("");
}
return 0;
}
疯狂的自我检索者
![](https://www.nowcoder.com/equation?tex=%E6%9C%80%E4%BD%8E%E5%B0%B1%E6%8A%8A%E6%9C%AA%E7%9F%A5%E7%9A%84%E5%85%A8%E5%BD%93%E6%88%901%EF%BC%8C%E6%9C%80%E9%AB%98%E5%B0%B1%E6%8A%8A%E6%9C%AA%E7%9F%A5%E7%9A%84%E5%85%A8%E5%BD%93%E6%88%905&preview=true)
#include <cstdio>
#include <iostream>
using namespace std;
const int N = 2e5 + 10;
double sum;
int n,m;
int main(){
scanf("%d%d",&n,&m);
for(int i = 1;i <= n-m;i++){
double x;scanf("%lf",&x);
sum += x;
}
double mx = sum + m*5,mi = sum + m*1;
mx = mx / (1.0*n),mi = mi / (1.0*n);
printf("%.5f %.5f\n",mi,mx);
return 0;
}
解方程
![](https://www.nowcoder.com/equation?tex=f(x)%20%3D%20x%5Ea%20%2B%20b*lnx%20%E6%98%AF%E4%B8%AA%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E5%87%BD%E6%95%B0%EF%BC%8C%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%EF%BC%8C%E5%9C%A8%E6%9F%A5%E6%89%BE%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%A6%82%E6%9E%9Cfabs(cal(mid)%20-%20c)%E5%B0%8F%E4%BA%8E1e-7%E7%9B%B4%E6%8E%A5break%E6%8E%89&preview=true)
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
int a,b,c;
const double eps = 1e-7;
double cal(double x){
double res = pow(x,a) + b*log(x);
return res;
}
int main(){
scanf("%d%d%d",&a,&b,&c);
double l = 0,r = 1e9;
double ans = -1;
while(r - l > eps){
double mid = (l + r)/2;
if(fabs(cal(mid) - c) < eps){
ans = mid;
break;
}else if(cal(mid) >= c){
ans = mid;
r = mid;
}else l = mid;
}
printf("%.14f\n",ans);
}
神奇的字母(二)
![](https://www.nowcoder.com/equation?tex=%E5%BC%80%E4%B8%AA%E6%A1%B6%EF%BC%8C%E7%BB%9F%E8%AE%A1%E6%AC%A1%E6%95%B0%E6%9C%80%E5%A4%9A&preview=true)
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
string str;
int num[30];
int main(){
while(cin>>str){
for(int i = 0;i < str.size();i++){
num[str[i] - 'a']++;
}
}
int mx = 0,mx_ch = -1;
for(int i = 0;i < 26;i++){
if(num[i] > mx){
mx = num[i];
mx_ch = i;
}
}
printf("%c\n",(char)('a' + mx_ch));
return 0;
}
十字爆破
![](https://www.nowcoder.com/equation?tex=%E7%94%A8col%5Bi%5D%E8%A1%A8%E7%A4%BA%E7%AC%ACi%E8%A1%8C%E5%85%83%E7%B4%A0%E4%B9%8B%E5%92%8C%EF%BC%8Crow%5Bi%5D%E8%A1%A8%E7%A4%BA%E7%AC%ACi%E5%88%97%E5%85%83%E7%B4%A0%E4%B9%8B%E5%92%8C&preview=true)
![](https://www.nowcoder.com/equation?tex=%E7%88%86%E7%A0%B4(i%2Cj)%E5%B0%B1%E6%98%AF%20col%5Bi%5D%20%2B%20row%5Bj%5D%20-%20val%5Bi%5D%5Bj%5D&preview=true)
![](https://www.nowcoder.com/equation?tex=val%5Bi%5D%5Bj%5D%E8%BD%AC%E6%88%90%E4%B8%80%E7%BB%B4%E5%B0%B1%E6%98%AFval%5Bi*m%2Bj%5D&preview=true)
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
const int N = 1e6 + 10;
ll row[N],col[N];
int n,m;
ll a[N];
int num(int i,int j){
return (i-1)*m + j;
}
int main(){
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
scanf("%lld",&a[num(i,j)]);
col[i] = col[i] + a[num(i,j)];
row[j] = row[j] + a[num(i,j)];
}
}
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
printf("%lld ",col[i]+row[j]-a[num(i,j)]);
}
puts("");
}
return 0;
}
异或和之和
![](https://www.nowcoder.com/equation?tex=%E7%BB%9F%E8%AE%A1%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%AF%8F%E4%B8%80%E4%BD%8D%E4%B8%8A%E7%9A%84%E8%B4%A1%E7%8C%AE%EF%BC%8C%E5%8F%AA%E6%9C%891%5Cwedge1%5Cwedge1%E5%92%8C0%5Cwedge0%5Cwedge1%E6%89%8D%E4%BC%9A%E4%BA%A7%E7%94%9F%E8%B4%A1%E7%8C%AE&preview=true)
![](https://www.nowcoder.com/equation?tex=%E9%A6%96%E5%85%88%E7%BB%9F%E8%AE%A1%E6%AF%8F%E4%B8%AA%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%BD%8D%E4%B8%8A1%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0a_i%E5%92%8C0%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0b_i&preview=true)
![](https://www.nowcoder.com/equation?tex=%E5%AF%B9%E4%BA%8E%E7%AC%ACi%E4%BD%8D%E7%9A%84%E8%B4%A1%E7%8C%AE%E5%B0%B1%E6%98%AF(1ll%3C%3Ci)%20*%20(C(a_i%2C3)%20%2B%20a_i*C(b_i%2C2))&preview=true)
#include <cstdio>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
const int N = 2e5 + 10;
int a[N];
int num[64][2];
ll quick_mod(ll a, ll b){
ll ans=1;
a%=mod;
while(b){
if(b&1){
ans=ans*a%mod;
b--;
}
b>>=1;
a=a*a%mod;
}
return ans;
}
ll C(ll n,ll m){
if(m>n) return 0;
ll ans=1;
for(int i=1;i<=m;i++){
ll a=(n+i-m)%mod;
ll b=i%mod;
ans=ans*(a*quick_mod(b,mod-2)%mod)%mod;
}
return ans;
}
int main(){
int n;scanf("%d",&n);
for(int i = 0;i < n;i++){
ll x;scanf("%lld",&x);
for(int j = 0;j < 64;j++){
ll k = x % 2;
num[j][k]++;
x >>= 1ll;
}
}
ll ans = 0;
for(ll i = 0;i < 64;i++){
ans = (ans + ((1ll<<i) % mod) * (C(num[i][1],3) + C(num[i][0],2)*C(num[i][1],1) % mod) % mod) % mod;
}
printf("%lld\n",ans);
return 0;
}