问题 I: 连通块计数
时间限制: 1 Sec 内存限制: 128 MB
提交: 108 解决: 45
[提交] [状态] [讨论版] [命题人:admin]
题目描述
小A有一棵长的很奇怪的树,他由n条链和1个点作为根构成,第i条链有ai个点,每一条链的一端都与根结点相连。
现在小A想知道,这棵长得奇怪的树有多少非空的连通子树,你只需要输出答案对998244353取模的值即可
输入
第一行一个正整数n
第二行n个正整数a1…an
1≤n≤105
1≤ai≤107
输出
输出答案对998244353取模后的值
样例输入
2 1 1
样例输出
6
AC代码:
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <map>
#include <limits.h>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
const int man=1e5+50;
const ll mod=998244353;
ll a[man],b[man];
ll n,i,j;
int main()
{#ifndef ONLINE_JUDGE// freopen("in.txt","r",stdin);#endifscanf("%lld",&n);for(i=0;i<n;i++)scanf("%lld",&a[i]);ll m=1;for(i=0;i<n;i++)m=(m*(a[i]+1))%mod;for(i=0;i<n;i++)m=(m+a[i]*(1+a[i])/2%mod)%mod;printf("%lld\n",m);return 0;
}