QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#672470#9255. Python Programfgz#AC ✓3ms3832kbC++234.3kb2024-10-24 16:55:552024-10-24 16:55:55

Judging History

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

  • [2024-10-24 16:55:55]
  • 评测
  • 测评结果:AC
  • 用时:3ms
  • 内存:3832kb
  • [2024-10-24 16:55:55]
  • 提交

answer

#include<bits/stdc++.h>
#define ios ios::sync_with_stdio(0), cin.tie(0)
#define time chrono::system_clock::now().time_since_epoch().count()
using namespace std;
using ll = long long;
using pll = pair<int, int>;
#define int long long

const int mod = 1e9 + 7, N = 2e5 + 10;

void solve(){
    vector<string> s(10);

    for(int i = 1; i <= 5; i ++){
        getline(cin, s[i]);
    }
    int ans = 0;

    for(int i = 0; i < s[1].size(); i ++){
        if(s[1][i] <= '9' && s[1][i] >= '0'){
            ans *= 10;
            ans += s[1][i] - '0';
        }
    }

    vector<string> fi(5), fj(5);
    int idx = 1, f = 0;

    // 16 -> end;
    // 
    string ti, tj;
    ti += s[2][5], tj += s[3][5];
    for(int i = 0; i < s[2].size(); i ++){
        if(s[2][i] == '(')f = 1;
        if(f == 1){
        if(s[2][i] == ',')idx ++;
        if((s[2][i] <= '9' && s[2][i] >= '0') || s[2][i] == '-'){
            fi[idx] += s[2][i];
        }
        if(s[2][i] <= 'z' && s[2][i] >= 'a'){
            fi[idx] += s[2][i];
        }
        }
    }
    idx = 1, f = 0;
    for(int i = 0; i < s[3].size(); i ++){
        if(s[3][i] == '(')f = 1;
        if(f == 1){
            if(s[3][i] == ',')idx ++;
            if((s[3][i] <= '9' && s[3][i] >= '0') || (s[3][i] == '-')){
            fj[idx] += s[3][i];
            }
        if(s[3][i] <= 'z' && s[3][i] >= 'a'){
            fj[idx] += s[3][i];
        }   
        }
    }

    if(fi[3].size() == 0)fi[3] += '1';
    if(fj[3].size() == 0)fj[3] += '1';


    vector<int> ffi(5, 0), ffj(5, 0);
    for(int i = 1; i <= 3; i ++){
        if(fi[i][0] >= 'a' && fi[i][0] <= 'z'){
            ffi[i] = mod;
            continue;
        }
        if(fi[i][0] == '-'){
            for(int j = 1; j < fi[i].size(); j ++){
                ffi[i] *= 10;
                ffi[i] += (fi[i][j] - '0');
            }
            ffi[i] *= -1;
        }else {
            for(int j = 0; j < fi[i].size(); j ++){
                ffi[i] *= 10;
                ffi[i] += (fi[i][j] - '0');
            }
        }    
    }
    for(int i = 1; i <= 3; i ++){
        if(fj[i][0] >= 'a' && fj[i][0] <= 'z'){
            ffj[i] = mod;
            continue;
        }
        if(fj[i][0] == '-'){
            for(int j = 1; j < fj[i].size(); j ++){
                ffj[i] *= 10;
                ffj[i] += (fj[i][j] - '0');
            }
            ffj[i] *= -1;
        }else {
            for(int j = 0; j < fj[i].size(); j ++){
                ffj[i] *= 10;
                ffj[i] += (fj[i][j] - '0');
            }
        }    
    }

    if(ffi[3] >= 0){
        for(int i = ffi[1]; i < ffi[2]; i += ffi[3]){
            int st = (ffj[1] == mod ? i : ffj[1]);
            int ed = (ffj[2] == mod ? i : ffj[2]);
            int ps = (ffj[3] == mod ? i : ffj[3]);
            if(ps < 0){
                if(st <= ed)continue;
            }
            else {
                if(st >= ed) continue;
            }
            // cout << st << " " << ed << " " << ps << endl;
            int tim = (ed - ps/abs(ps) - st) / ps + 1;
            ed = st + (tim - 1) * ps;
            ans += (st + ed) * tim / 2;

            // cout<<tim<<" "<<ed<<endl;
        }
    }else {
        // cout << "test" << endl;
        for(int i = ffi[1]; i > ffi[2]; i += ffi[3]){
            int st = (ffj[1] == mod ? i : ffj[1]);
            int ed = (ffj[2] == mod ? i : ffj[2]);
            int ps = (ffj[3] == mod ? i : ffj[3]);
            if(ps < 0){
                if(st <= ed)continue;
            }
            else {
                if(st >= ed) continue;
            }
            
            // cout << st << " " << ed << " " << ps << endl;
            int tim = (ed - ps/abs(ps) - st) / ps + 1;
            ed = st + (tim - 1) * ps;
            // cout << (st + ed) * tim / 2 << endl;

            ans += (st + ed) * tim / 2;
        }
    }

    cout << ans << endl;


    // for(int i = 1; i <= 3; i ++)
    //     cout << ffi[i] << " ";
    // cout << endl;
    // for(int i = 1; i <= 3; i ++)
    //     cout << ffj[i] << " ";
    // cout << endl;



    




}

signed main()
{
    ios;
    int t = 1;
    // cin >> t;
    while (t--)
        solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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

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: 3ms
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: 0
Accepted
time: 1ms
memory: 3600kb

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: 3ms
memory: 3532kb

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