#include<cstdio>usingnamespace std;
constint maxn = 1e5 + 5;
constint mod = 1e9 + 7;
int n, m;
int a[maxn], f[maxn];
inlineintmax(constint &a, constint &b){ return (a >= b ? a : b); }
inlinevoidadd(int &x, int y){ if ((x += y) >= mod) x -= mod; }
intqpow(int base, int power){
int res = 1;
while (power)
{
if (power & 1) res = 1ll * res * base % mod;
base = 1ll * base * base % mod;
power >>= 1;
}
return res;
}
intmain(){
scanf("%d", &n);
int lim = 0;
for (int i = 1; i <= n; i++) scanf("%d", &a[i]), m += a[i], lim = max(lim, a[i]);
f[1] = 1ll * (m - 1) * (m - 1) % mod * qpow(m, mod - 2) % mod;
f[2] = (2 * f[1] % mod - 1 + mod) % mod;
for (int i = 2; i <= lim; i++) f[i + 1] = ((2 * f[i] % mod - f[i - 1] + mod) % mod - 1ll * (m - 1) * qpow(m - i, mod - 2) % mod + mod) % mod;
int ans = 0;
for (int i = 1; i <= n; i++) ans = (ans + f[a[i]]) % mod;
printf("%d\n", ans);
return0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通