春测T2 随机少1,萌新请问做法有无大问题?或细节哪里有出错?
  • 板块学术版
  • 楼主WannaYellow
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/3/4 22:08
  • 上次更新2023/10/23 23:02:56
查看原帖
春测T2 随机少1,萌新请问做法有无大问题?或细节哪里有出错?
542905
WannaYellow楼主2023/3/4 22:08
#include<bits/stdc++.h>
using std::cin;
using std::cout;
using std::endl;
using std::cerr;
//为啥power5 会少个1啊啊啊啊啊啊啊
//1的任意次数都可以。。。。。。。
//不如calc统一不管1
//但是没管用。。。。。 
namespace xxy {
#define int long long
#define double long double
	int n, k;
	bool vis[70];
	const double one = 1;
	std::vector<int> used;
	int calc(int lim, int j)
	{
		int add = pow((double)lim, one / used[j]);
		int re = 0;
		re += add-1;
		for(int i = 0; i < j; i++) {
			re -= calc(add, i);
		}
		return re;
	}
	signed main()
	{
		cin >> n >> k;
		if(k == 1) {
			cout << n;
			return 0;
		}
		int lim = (log(n) / log(2));
		int ans = 0;
		for(int i = k; i <= lim; i++) {
			if(vis[i])continue;
			for(int j = 1; j * i <= lim; j++) {
				vis[j * i] = true;
			}
			used.push_back(i);
			ans+=calc(n,used.size()-1);
		}
		cout << ans+1;
		return 0;
	}
}
signed main()
{
	// freopen("power.in", "r", stdin);
	// freopen("power.out", "w", stdout);
	std::ios::sync_with_stdio(false);
	cin.tie(nullptr), cout.tie(nullptr);
	return xxy::main();
}
2023/3/4 22:08
加载中...