Submission #22298

#TimeUsernameProblemLanguageResultExecution timeMemory
22298↓우리보다잘하는팀 (#40)Unifying Values (KRIII5_UV)C++14
7 / 7
6 ms1372 KiB
#include<cstdio> #include<set> int n; long long int x[10100]; long long int s[10100]; std::set<long long int>dvs; int ans; const int mod = 1000000007; int dp[10100]; int main() { scanf("%d", &n); s[0] = 0; for (int i = 0; i < n; i++) { scanf("%lld", &x[i]); s[i + 1] = s[i] + x[i]; } if (s[n] == 0) { ans = 1; for (int i = 1; i < n; i++) { if (s[i] == 0) { ans *= 2; ans %= mod; } } ans--; } else if (s[n] < 0) { for (int i = 0; i <= n; i++) { x[i] = -x[i]; s[i] = -s[i]; } } if (s[n] > 0) { for (int i = 0; i <= n; i++) { if (s[i] > 0 && s[i] < s[n] && s[n] % s[i] == 0 && s[n] / s[i] <= n) { dvs.insert(s[i]); } } for (auto &d : dvs) { for (int i = 0; i <= s[n] / d; i++) { dp[i] = 0; } dp[0] = 1; for (int i = 1; i < n; i++) { if (s[i] > 0 && s[i] % d == 0 && s[i] < s[n]) { int lv = s[i] / d; dp[lv] += dp[lv - 1]; dp[lv] %= mod; } } ans += dp[s[n] / d - 1]; ans %= mod; } } printf("%d", ans); }

Compilation message (stderr)

UV.cpp: In function 'int main()':
UV.cpp:11:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
                 ^
UV.cpp:14:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld", &x[i]);
                       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...