HDU3988 WA 求找Bug!
  • 板块学术版
  • 楼主Vitamin_B
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/4 16:00
  • 上次更新2024/5/4 16:05:00
查看原帖
HDU3988 WA 求找Bug!
743373
Vitamin_B楼主2024/5/4 16:00

rt,码风新奇不喜勿喷

# pragma GCC optimize("Ofast,no-stack-protector")

# pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")

# include <bits/stdc++.h>

typedef long long ll;

using namespace std;

const int maxn = 1e7;

int t;

ll k, n, sum, minx, tot, m, p[670000], cnt; //664579

bitset <10000005> vis;

int main () {

	ios::sync_with_stdio (0);

	cin.tie (0);

	cout.tie (0);

	for (int i = 2; i * i <= maxn; ++ i)
		if (! vis[i])
			for (int j = i * i; j <= maxn; j += i)
				vis[j] = 1;

	for (int i = 2; i <= maxn; ++ i)
		if (! vis[i])
			p[++ cnt] = i;
//	cerr << m << '\n';
	cin >> t;

	for (int ca = 1; ca <= t; ++ ca) {

		cin >> k >> n;

		cout << "Case " << ca << ": ";

		if (k == 1) {

			cout << "inf\n";

			continue ;

		}

		minx = 9223372036854775807ll;

		for (ll i = 1; i <= cnt && p[i] * p[i] <= k; ++ i)
			if (! (k % p[i])) {

				tot = sum = 0, m = n;

				while (! (k % p[i]))
					k /= p[i], ++ tot;

				while (m)
					m /= p[i], sum += m;

				minx = min (minx, sum / tot);

			}

		if (k ^ 1) {

			sum = 0;

			m = n;

			while (m)
				m /= k, sum += m;

			minx = min (minx, sum);

		}

		cout << minx << '\n';

	}

	return 0;

}
2024/5/4 16:00
加载中...