QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#572474#9255. Python ProgramlonlynessAC ✓31ms3876kbC++238.0kb2024-09-18 14:49:242024-09-18 14:49:25

Judging History

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

  • [2024-09-18 14:49:25]
  • 评测
  • 测评结果:AC
  • 用时:31ms
  • 内存:3876kb
  • [2024-09-18 14:49:24]
  • 提交

answer

//  _                          _   _
// | |   ___    _ __     ___  | | (_)  _ __     ___   ___   ___
// | |  / _ \  | '_ \   / _ \ | | | | | '_ \   / _ \ / __| / __|
// | | | (_) | | | | | |  __/ | | | | | | | | |  __/ \__ \ \__ \
// |_|  \___/  |_| |_|  \___| |_| |_| |_| |_|  \___| |___/ |___/
//
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<unordered_map>

using namespace std;
#define int long long
#define endl "\n"
const int N = 1e5 + 10;
typedef pair<int, int> PII;
int k;

int get(string s) {
    int res = 0;
    bool flag = 1;
    for (int i = 0; i < s.size(); i++) {
        if (s[i] == '-') {
            flag = 0;
            continue;
        }
        res = res * 10 + s[i] - '0';
    }
    if (!flag)res = -res;
    return res;
}

void solve() {
    string s[100];
    int idx = 0;
    string n, m;
    cin >> s[idx++];
    cin >> s[idx++];
    cin >> n;
    cin >> s[idx++];
    cin >> s[idx++];
    string a, b, c, d, e, f;
    for (int i = 0; i < s[idx - 1].size(); i++) {
        if (s[idx - 1][i] == '(') {
            int j = i + 1;
            // cout<<i<<' '<<j<<endl;
            while (j < s[idx - 1].size() && s[idx - 1][j] != ',' && s[idx - 1][j] != ')') {
                a += s[idx - 1][j];
                j++;
            }
            //  cout<<i<<' '<<j<<endl;
            i = j;
            j++;
            while (j < s[idx - 1].size() && s[idx - 1][j] != ',' && s[idx - 1][j] != ')') {
                b += s[idx - 1][j];
                j++;
                if (s[idx - 1][j] == ')')break;
            }
            if (s[idx - 1][j] == ')')break;
            j++;
            i = j;
            // cout<<j<<endl;
            while (j < s[idx - 1].size() && s[idx - 1][j] != ',' && s[idx - 1][j] != ')') {
                c += s[idx - 1][j];

                j++;
            }
        }
    }
    cin >> s[idx++];
    cin >> s[idx++];
    cin >> s[idx++];
    cin >> s[idx++];
    for (int i = 0; i < s[idx - 1].size(); i++) {
        if (s[idx - 1][i] == '(') {
            int j = i + 1;
            // cout<<i<<' '<<j<<endl;
            while (j < s[idx - 1].size() && s[idx - 1][j] != ',' && s[idx - 1][j] != ')') {
                d += s[idx - 1][j];
                j++;
            }
            //  cout<<i<<' '<<j<<endl;
            i = j;
            j++;
            while (j < s[idx - 1].size() && s[idx - 1][j] != ',' && s[idx - 1][j] != ')') {
                e += s[idx - 1][j];
                j++;
                if (s[idx - 1][j] == ')')break;
            }
            if (s[idx - 1][j] == ')')break;
            j++;
            i = j;
            while (j < s[idx - 1].size() && s[idx - 1][j] != ',' && s[idx - 1][j] != ')') {
                f += s[idx - 1][j];
                j++;
            }
        }
    }
    // cout<<a<<' '<<b<<' '<<c<<' '<<d<<' '<<e<<' '<<f<<endl;
    int ans = 0;
    if (c.empty()) {
        if (f.empty()) {
            for (int i = get(a); i < get(b); i++) {
                int d1, e1;
                if (d == n)d1 = i;
                else d1 = get(d);
                if (e == n)e1 = i;
                else e1 = get(e);
                if (d1 < e1) {
                    int st = d1;
                    int ed = e1 - 1;
                    ans += (st + ed) * (ed - st + 1) / 2;
                }
            }
        } else {

            for (int i = get(a); i < get(b); i++) {
                int d1, e1, f1;
                if (d == n)d1 = i;
                else d1 = get(d);
                if (e == n)e1 = i;
                else e1 = get(e);
                if (f == n)f1 = i;
                else f1 = get(f);
                // cout<<d1<<' '<<e1<<' '<<f1<<endl;
                if (f1 > 0) {
                    if (d1 < e1) {
                        int st = d1;
                        int cnt = (e1 - 1 - d1) / f1;
                        int ed = st + cnt * f1;
                        ans += (st + ed) * (cnt + 1) / 2;
                    }
                } else {
                    if (d1 > e1) {
                        int st = d1;
                        int cnt = (d1 - (e1 + 1)) / f1;
                        cnt*=-1;
                        int ed = st + cnt * f1;
//                        cout << st << ' ' << ed << endl;
                        ans += (st + ed) * (cnt + 1) / 2;
                    }
                }
            }
        }
    } else {
        if (f.empty()) {
            if (get(c) > 0) {
                for (int i = get(a); i < get(b); i += get(c)) {
                    int d1, e1;
                    if (d == n)d1 = i;
                    else d1 = get(d);
                    if (e == n)e1 = i;
                    else e1 = get(e);
                    if (d1 < e1) {
                        int st = d1;
                        int ed = e1 - 1;
                        ans += (st + ed) * (ed - st + 1) / 2;
                    }
                }
            } else {
                for (int i = get(a); i > get(b); i += get(c)) {
                    int d1, e1;
                    if (d == n)d1 = i;
                    else d1 = get(d);
                    if (e == n)e1 = i;
                    else e1 = get(e);
                    if (d1 < e1) {
                        int st = d1;
                        int ed = e1 - 1;
                        ans += (st + ed) * (ed - st + 1) / 2;
                    }
                }
            }
        } else {
            if (get(c) > 0) {
                for (int i = get(a); i < get(b); i += get(c)) {
                    int d1, e1, f1;
                    if (d == n)d1 = i;
                    else d1 = get(d);
                    if (e == n)e1 = i;
                    else e1 = get(e);
                    if (f == n)f1 = i;
                    else f1 = get(f);
                    if (f1 > 0) {
                        if (d1 < e1) {
                            int st = d1;
                            int cnt = (e1 - 1 - d1) / f1;
                            int ed = st + cnt * f1;
                            ans += (st + ed) * (cnt + 1) / 2;
                        }
                    } else {
                        if (d1 > e1) {
                            int st = d1;
                            int cnt = (d1 - (e1 + 1)) / f1;
                            cnt*=-1;
                            int ed = st + cnt * f1;
//                            cout << st << ' ' << ed << endl;
                            ans += (st + ed) * (cnt + 1) / 2;
                        }
                    }
                }
            } else {
                for (int i = get(a); i > get(b); i += get(c)) {
                    int d1, e1, f1;
                    if (d == n)d1 = i;
                    else d1 = get(d);
                    if (e == n)e1 = i;
                    else e1 = get(e);
                    if (f == n)f1 = i;
                    else f1 = get(f);
                    if (f1 > 0) {
                        if (d1 < e1) {
                            int st = d1;
                            int cnt = (e1 - 1 - d1) / f1;
                            int ed = st + cnt * f1;
                            ans += (st + ed) * (cnt + 1) / 2;
                        }
                    } else {
                        if (d1 > e1) {
                            int st = d1;
                            int cnt = (d1 - (e1 + 1)) / f1;
                            cnt*=-1;
                            int ed = st + cnt * f1;
//                            cout << st << ' ' << ed << endl;
                            ans += (st + ed) * (cnt + 1) / 2;
                        }
                    }
                }
            }
        }
    }
    cout << ans << endl;
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t = 1;
    // cin>>t;
    while (t--) {
        solve();
    }
    return 0;
}

詳細信息

Test #1:

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

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: 3804kb

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: 23ms
memory: 3808kb

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: 0
Accepted
time: 5ms
memory: 3584kb

input:

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

output:

11756963404587200

result:

ok single line: '11756963404587200'

Test #5:

score: 0
Accepted
time: 31ms
memory: 3876kb

input:

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

output:

160610445975856765

result:

ok single line: '160610445975856765'

Extra Test:

score: 0
Extra Test Passed