Paste will expire never.
- // Меньшиков. Тренировка 13.
- // 13E. Сумма произведений [prodsum]
- // O(N) по авторскому разбору
- // ibelyaev: 07Jan2011
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- using namespace std;
- int n,s;
- void input()
- {
- cin>>n>>s;
- }
- int amount;
- double eps = 1e-9;
- void solve()
- {
- // z = 0 amount
- // p = +1 amount
- // m = -1 amount
- int p;
- for (int z = 0; z<=n; z++)
- {
- int k = n - z;
- int a = 4;
- int b = -4*k;
- int c = k*k - k - 2*s;
- int d = b*b - 4*a*c;
- if (d<0) continue;
- int sqrtD = sqrt((double)d) + eps;
- if (sqrtD * sqrtD == d)
- {
- if ((-b + sqrtD) % (2*a) == 0){
- p = (- b + sqrtD) / (2*a);
- if (0<=p && z+p <= n){
- amount++;
- continue;
- }
- }
- if ((-b - sqrtD) % (2*a) == 0){
- p = (- b - sqrtD) / (2*a);
- if (0<=p && z+p <= n){
- amount++;
- continue;
- }
- }
- }
- }
- cout<<amount;
- }
- int main()
- {
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- input();
- solve();
- return 0;
- }
Editing is locked.