# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
3548 | blmarket | Inherited disease (kriii1_I) | C++98 | 0 ms | 1672 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <sstream>
#include <numeric>
#include <iterator>
#include <queue>
#include <set>
#include <map>
#include <vector>
#define mp make_pair
#define pb push_back
#define sqr(x) ((x)*(x))
#define foreach(it,c) for(typeof((c).begin()) it = (c).begin(); it != (c).end(); ++it)
using namespace std;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef pair<int,int> PII;
template<typename T> int size(const T &a) { return a.size(); }
int D;
int dd[105];
const long long mod = 1000000007LL;
int main(void)
{
scanf("%d", &D);
for(int i=0;i<D;i++) {
scanf("%d", &dd[i]);
}
if(D == 1) {
cout << 1 << endl;
return 0;
}
long long this_gen = 1;
long long left = 1;
long long noobs = 0;
for(int i=1;i<=D;i++) {
// cout << "GENERATION " << i << " LEFT = " << left << endl;
this_gen *= i;
this_gen %= mod;
// cout << "THIS_GEN = " << this_gen << endl;
cout << (left + noobs) % mod << endl;
if(i == D) {
//cout << left << " " << noobs << endl;
return 0;
}
left += this_gen;
if(left >= mod) left -= mod;
noobs *= (i + 1);
// cout << "PN=" << noobs << endl;
noobs += (dd[i] - 1);
noobs %= mod;
// cout << "N=" << noobs << endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |