QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#550595 | #9255. Python Program | ucup-team987# | AC ✓ | 6ms | 6932kb | C++20 | 2.0kb | 2024-09-07 13:33:13 | 2024-09-07 13:33:13 |
Judging History
answer
#include<iostream>
#include<algorithm>
#include<vector>
#include<cassert>
using namespace std;
pair<int,bool>rd(string X,int&id)
{
if(X[id]>='a'&&X[id]<='z')
{
id--;
assert(X[id]==','||X[id]=='(');
return make_pair(0,true);
}
int v=0,p=1;
while(X[id]>='0'&&X[id]<='9')
{
v+=p*(X[id]-'0');
p*=10;
id--;
}
if(X[id]=='-')v=-v,id--;
assert(X[id]==','||X[id]=='(');
return make_pair(v,false);
}
vector<pair<int,bool> >f(string X)
{
vector<pair<int,bool> >ret;
int id=X.size()-1;
assert(X[id]==':');
id--;
assert(X[id]==')');
id--;
ret.push_back(rd(X,id));
id--;
ret.push_back(rd(X,id));
if(X[id]==',')
{
id--;
ret.push_back(rd(X,id));
reverse(ret.begin(),ret.end());
}
else
{
reverse(ret.begin(),ret.end());
ret.push_back(make_pair(1,false));
}
return ret;
}
vector<int>vals(int a,int b,int c)
{
assert(c!=0);
vector<int>ret;
if(c>0)
{
//a,...,a+k*c<b
if(a<b)
{
int k=(b-a-1)/c;
ret.reserve(k+1);
for(int i=0;i<=k;i++)ret.push_back(a+i*c);
}
}
else
{
//a,...,a+k*c>b
if(a>b)
{
int k=(a-b-1)/(-c);
ret.reserve(k+1);
for(int i=0;i<=k;i++)ret.push_back(a+i*c);
}
}
return ret;
}
long long sum(int a,int b,int c)
{
assert(c!=0);
if(c>0)
{
//a,...,a+k*c<b
if(a<b)
{
int k=(b-a-1)/c;
return (long long)a*(k+1)+(long long)k*(k+1)/2*c;
}
else return 0LL;
}
else
{
//a,...,a+k*c>b
if(a>b)
{
int k=(a-b-1)/(-c);
return (long long)a*(k+1)+(long long)k*(k+1)/2*c;
}
else return 0LL;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
string X,Y;
getline(cin,X);
getline(cin,X);
getline(cin,Y);
vector<pair<int,bool> >x=f(X),y=f(Y);
for(auto[v,fg]:x)assert(!fg);
long long ans=0;
for(int i:vals(x[0].first,x[1].first,x[2].first))
{
int d,e,f;
if(y[0].second)d=i;
else d=y[0].first;
if(y[1].second)e=i;
else e=y[1].first;
if(y[2].second)f=i;
else f=y[2].first;
ans+=sum(d,e,f);
}
cout<<ans<<"\n";
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3596kb
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: 3604kb
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: 6932kb
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: 3744kb
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: 6ms
memory: 6908kb
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