QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#550487#9248. An Easy Math Problemucup-team3931#TL 0ms4060kbC++141.1kb2024-09-07 13:09:332024-09-07 13:09:33

Judging History

This is the latest submission verdict.

  • [2024-10-31 22:36:43]
  • hack成功,自动添加数据
  • (/hack/1098)
  • [2024-10-31 22:13:58]
  • hack成功,自动添加数据
  • (/hack/1096)
  • [2024-10-31 22:00:43]
  • hack成功,自动添加数据
  • (/hack/1095)
  • [2024-09-07 13:09:33]
  • Judged
  • Verdict: TL
  • Time: 0ms
  • Memory: 4060kb
  • [2024-09-07 13:09:33]
  • Submitted

answer

#include <bits/stdc++.h>
#define pb emplace_back
#define fst first
#define scd second
#define mkp make_pair
#define mems(a, x) memset((a), (x), sizeof(a))

using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<ll, ll> pii;

const int maxn = 2500;

ll n, d[maxn], m;

struct frac {
	ll x, y;
	frac(ll a = 0, ll b = 1) {
		if (b < 0) {
			a = -a;
			b = -b;
		}
		x = a;
		y = b;
	}
};

inline bool operator < (const frac &a, const frac &b) {
	return a.x * b.y < a.y * b.x;
}

void solve() {
	m = 0;
	scanf("%lld", &n);
	for (ll i = 1; i * i <= n; ++i) {
		if (n % i) {
			continue;
		}
		d[++m] = i;
		if (i * i != n) {
			d[++m] = n / i;
		}
	}
	set<frac> S;
	sort(d + 1, d + m + 1);
	for (int i = 1; i <= m; ++i) {
		for (int j = i; j <= m; ++j) {
			if (d[i] * d[j] > n) {
				break;
			}
			if (n % (d[i] * d[j]) == 0) {
				S.emplace(d[i], d[j]);
			}
		}
	}
	printf("%d\n", (int)S.size());
}

int main() {
	int T = 1;
	scanf("%d", &T);
	while (T--) {
		solve();
	}
	return 0;
}

详细

Test #1:

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

input:

10
1
2
3
4
5
6
7
8
9
10

output:

1
2
2
3
2
5
2
4
3
5

result:

ok 10 lines

Test #2:

score: -100
Time Limit Exceeded

input:

2000
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
6469693230
646969323...

output:


result: