QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#729725#9255. Python ProgramWhxxxxx318#WA 56ms3808kbC++173.9kb2024-11-09 17:41:432024-11-09 17:41:44

Judging History

你现在查看的是最新测评结果

  • [2024-11-09 17:41:44]
  • 评测
  • 测评结果:WA
  • 用时:56ms
  • 内存:3808kb
  • [2024-11-09 17:41:43]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define int long long
int read(string &s)
{
    int x = 0, f = 1;
    int i = 0;
    while (i < s.size() && !isdigit(s[i]))
    {
        if (s[i] == '-')
            f = -f;
        i++;
    }
    while (i < s.size() && isdigit(s[i]))
    {
        x = x * 10 + s[i] - '0';
        s[i] = '*';
        i++;
    }
    return x * f;
}
void solve()
{
    int a, b, c = 1, d = 0, e = 0, f = 0;
    int ans = 0;
    string s;
    getline(cin, s);
    getline(cin, s);
    a = read(s);
    b = read(s);
    c = read(s);
    if (c == 0)
        c = 1;
    // cout << a << " " << b << " " << c;
    getline(cin, s);
    int pos = s.find('(') + 1;
    if (!isdigit(s[pos]) && !isdigit(s[pos + 1]))
        d = -1e18;
    pos = s.find(',') + 1;
    if (!isdigit(s[pos]) && !isdigit(s[pos + 1]))
        e = -1e18;
    s[pos - 1] = '*';
    pos = s.find(')') - 1;
    if (!isdigit(s[pos]))
        f = -1e18;
    if (d != -1e18)
        d = read(s);
    if (e != -1e18)
        e = read(s);
    if (f != -1e18)
        f = read(s);
    if (c > 0)
    {
        for (int i = a; i < b; i += c)
        {
            int dd = d, ee = e, ff = f;
            if (dd == -1e18)
                dd = i;
            if (ee == -1e18)
                ee = i;
            if (ff == -1e18)
                ff = i;
            int ed = 0;
            if (ff > 0)
            {
                if (ee <= dd)
                    continue;
                int l = 0, r = 1e9;
                while (l <= r)
                {
                    int mid = l + r >> 1;
                    if (dd + mid * ff < ee)
                        l = mid + 1, ed = mid * ff + dd;
                    else
                        r = mid - 1;
                }
            }
            else
            {
                if (ee >= dd)
                    continue;
                ff = -ff;
                int l = 0, r = 1e9;
                while (l <= r)
                {
                    int mid = l + r >> 1;
                    if (dd - mid * ff > ee)
                        l = mid + 1, ed = dd - mid * ff;
                    else
                        r = mid - 1;
                }

                swap(ed, dd);
            }
            int t = (ed - dd) / ff + 1;
            ans += (dd + ed) * t / 2;
        }
    }
    else
    {
        for (int i = a; i > b; i += c)
        {
            int dd = d, ee = e, ff = f;
            if (dd == -1e18)
                dd = i;
            if (ee == -1e18)
                ee = i;
            if (ff == -1e18)
                ff = i;
            int ed = 0;
            if (ff > 0)
            {
                if (ee <= dd)
                    continue;
                int l = 0, r = 1e9;
                while (l <= r)
                {
                    int mid = l + r >> 1;
                    if (dd + mid * ff < ee)
                        l = mid + 1, ed = mid * ff + dd;
                    else
                        r = mid - 1;
                }
            }
            else
            {
                if (ee >= dd)
                    continue;
                ff = -ff;
                int l = 0, r = 1e9;
                while (l <= r)
                {
                    int mid = l + r >> 1;
                    if (dd - mid * ff > ee)
                        l = mid + 1, ed = dd - mid * ff;
                    else
                        r = mid - 1;
                }

                swap(ed, dd);
            }
            int t = (ed - dd) / ff + 1;
            ans += (dd + ed) * t / 2;
        }
    }
    cout << ans << endl;
}
signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    int T = 1;
    // cin >> T;
    while (T--)
        solve();
    return 0;
}

// 5267431
// 4576213

// 2212222111222111122111112111

// 4576213

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3544kb

input:

ans=0
for a in range(1,3):
    for b in range(5,1,-2):
        ans+=b
print(ans)

output:

16

result:

ok single line: '16'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3548kb

input:

ans=0
for q in range(100,50,-1):
    for i in range(q,77,20):
        ans+=i
print(ans)

output:

2092

result:

ok single line: '2092'

Test #3:

score: 0
Accepted
time: 56ms
memory: 3616kb

input:

ans=0
for i in range(1,1000000):
    for j in range(i,1,-1):
        ans+=j
print(ans)

output:

166666666665500001

result:

ok single line: '166666666665500001'

Test #4:

score: -100
Wrong Answer
time: 0ms
memory: 3808kb

input:

ans=0
for i in range(31,321983,2):
    for j in range(313,382193):
        ans+=j
print(ans)

output:

0

result:

wrong answer 1st lines differ - expected: '11756963404587200', found: '0'