Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int MaxN = (int)1e6 + 10;
- const int INF = 1e9;
- int n, a[MaxN], d[MaxN];
- long long s[MaxN];
- int cnt[MaxN], pr[MaxN];
- void solve() {
- scanf("%d", &n);
- for (int i = 1; i <= n; ++i) {
- scanf("%d", &a[i]);
- s[i] = a[i] + s[i - 1];
- }
- memset(cnt, 0, (n + 10) * sizeof(cnt[0]));
- for (int i = 1; i <= n; ++i) {
- long long num = s[i];
- long long den = s[n];
- long long g = __gcd(num, den);
- num /= g;
- den /= g;
- if (den <= n) {
- cnt[den] += 1;
- }
- }
- int ans = 0;
- for (int i = n; i >= 1; --i) {
- for (int j = i + i; j <= n; j += i) {
- cnt[j] += cnt[i];
- }
- }
- for (int i = 1; i <= n; ++i) {
- ans += cnt[i] == i;
- if (cnt[i] == i) {
- printf("1");
- } else {
- printf("0");
- }
- }
- printf("\n");
- }
- int main() {
- // freopen("input.txt", "r", stdin);
- int t = 1000;
- scanf("%d", &t);
- while (t --> 0) {
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement