求这道题的代码,写了半天还是错的
#include <stdio.h>
#include <string>
//组合数公式
typedef long long LL;
using namespace std;
const int maxn = 1e3 + 5;
const int MOD = 1e9 + 7;
int inv[maxn];//阶乘的逆元
int fac[maxn];//阶乘
long long ksm(long long a, long long b, long long mod)
{
long long res = 1, base = a;
while (b)
{
if (b & 1)res = (res*base) % mod;
b >>= 1;
base = (base*base) % mod;
}
return res;
}
long long S(long long n){
return n + n*(n - 1) / 2;
}
long long C(int n, int m)
{
if (n == 4){
return 6;
}
if (n == 3){
return 3;
}
if (n == 2){
return 1;
}
if (m == 0 || n == m)return 1;
long long res = 1;
res = res*fac[n] % MOD*inv[m] % MOD*inv[n - m] % MOD;
return res;
}
int main(){
long long x = 0;
fac[0] = fac[1] = inv[1] = 1;
for (long long i = 2; i<maxn; i++)
{
inv[i] = (inv[i - 1] * ksm(i, MOD - 2, MOD)) % MOD;
fac[i] = (i*fac[i - 1]) % MOD;
}
scanf("%lld", &x);
long long count = 0;
long long temp1 = 0;
long long temp2 = 0;
long long sum = 0;
for (long long i = 0; i < x; i++){
scanf("%lld", &temp2);
if (temp2 - temp1 >= 0){
count++;
}
else{
sum += S(count);
count = 1;
}
temp1 = temp2;
}
sum += S(count);
printf("%lld", sum);
}