QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#729018#9255. Python ProgramWhxxxxx318#WA 60ms3844kbC++172.7kb2024-11-09 16:21:582024-11-09 16:22:01

Judging History

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

  • [2024-11-09 16:22:01]
  • 评测
  • 测评结果:WA
  • 用时:60ms
  • 内存:3844kb
  • [2024-11-09 16:21:58]
  • 提交

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]) && !isdigit(s[pos + 1]))
		f = -1e18;
	if (!d)
		d = read(s);
	if (!e)
		e = read(s);
	if (!f)
		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;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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

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: 60ms
memory: 3844kb

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: 6ms
memory: 3580kb

input:

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

output:

337436856749

result:

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