首页 > 其他分享 >春季测试T2

春季测试T2

时间:2023-03-25 18:56:54浏览次数:42  
标签:10 正整数 power 样例 T2 春季 ge 测试 18

[春季测试 2023] 幂次

题目描述

小 Ω 在小学数学课上学到了“幂次”的概念:\(\forall a, b \in \N^+\),定义 \(a^b\) 为 \(b\) 个 \(a\) 相乘。

她很好奇有多少正整数可以被表示为上述 \(a^b\) 的形式?由于所有正整数 \(m \in N^+\) 总是可以被表示为 \(m^1\) 的形式,因此她要求上述的表示中,必须有 \(b \geq k\),其中 \(k\) 是她事先选取好的一个正整数。

因此她想知道在 \(1\) 到 \(n\) 中,有多少正整数 \(x\) 可以被表示为 \(x = a^b\) 的形式,其中 \(a, b\) 都是正整数,且 \(b \geq k\)?

输入格式

第一行包含两个正整数 \(n, k\),意义如上所述。

输出格式

输出一行包含一个非负整数表示对应的答案。

样例 #1

样例输入 #1

99 1

样例输出 #1

99

样例 #2

样例输入 #2

99 3

样例输出 #2

7

样例 #3

样例输入 #3

99 2

样例输出 #3

12

提示

【样例 2 解释】

以下是全部 \(7\) 组符合题意的正整数及对应的一种合法的表示方法。

\(1 = 1^3, 8 = 2^3, 16 = 2^4, 27 = 3^3, 32 = 2^5, 64 = 4^3, 81 = 3^4\)

注意某些正整数可能有多种合法的表示方法,例如 \(64\) 还可以表示为 \(64 = 2^6\)。

但根据题意,同一个数的不同的合法表示方法只会被计入一次。

【样例 3 解释】

以下是全部 \(12\) 组符合题意的正整数及对应的一种合法的表示方法。

\(1 = 1^2, 4 = 2^2, 8 = 2^3, 9 = 3^2, 16 = 4^2, 25 = 5^2, 27 = 3^3, 32 = 2^5, 36 = 6^2, 49 = 7^2, 64 = 8^2, 81 = 9^2\)

【样例 4】

见选手目录下的 power/power4.in 与 power/power4.ans。

【样例 5】

见选手目录下的 power/power5.in 与 power/power5.ans。

【样例 6】

见选手目录下的 power/power6.in 与 power/power6.ans。

【数据范围】

对于所有数据,保证 \(1 \leq n \leq 10^{18}\),\(1 \leq k \leq 100\)。

测试点编号 \(n \le\) \(k\)
1 \(10^2\) \(=1\)
2 \(10^2\) \(\ge 2\)
3 \(10^4\) \(\ge 3\)
4 \(10^4\) \(\ge 2\)
5 \(10^6\) \(\ge 3\)
6 \(10^6\) \(\ge 2\)
7 \(10^8\) \(\ge 3\)
8 \(10^8\) \(\ge 2\)
9 \(10^{10}\) \(\ge 3\)
10 \(10^{10}\) \(\ge 2\)
11 \(10^{12}\) \(\ge 3\)
12 \(10^{12}\) \(\ge 2\)
13 \(10^{14}\) \(\ge 3\)
14 \(10^{14}\) \(\ge 2\)
15 \(10^{16}\) \(\ge 3\)
16 \(10^{16}\) \(\ge 2\)
17 \(10^{18}\) \(\ge 3\)
18 \(10^{18}\) \(\ge 2\)
19 \(10^{18}\) \(\ge 2\)
20 \(10^{18}\) \(\ge 2\)

题解:
算法复杂度:i*i<=\(10^{18}\), 枚举i是\(10^9\),可以枚举一下所有\(x^p\)的,85分。

#include<bits/stdc++.h>
using namespace std ;
long long n , k , ans=1 ;
bool vis[1000000005] ;
int main(){
	freopen("power.in" , "r" , stdin) ;
	freopen("power.out" , "w" , stdout) ;
	scanf("%lld%lld" , &n , &k) ;
	if(k==1){
		cout << n ;
		return 0 ;
	}
	for(int i=2 ; i*i<=n ; i++){
		if(vis[i]==1) continue ;
		bool flag = false ;
		int b=1 ;
		long long x = i ;
		while(n/x >= i){
			b++ ;
			x *= i ;
			if(x<=1000000000) vis[x] = 1 ;
			if(b>=k){
				ans++ ;
				flag = true ;
			}
		}
		if(flag==false) break ;
	}
	cout << ans ;
	
	return 0 ;
}

上述为yxm的代码。

进行优化:\(i*i*i<=10^{18}, 枚举i是10^6\),可以枚举一下所有\(x^p\)的,100分。
算一下所有p>=3的情况,去除p==2的情况,可以判断一下里面是完全平方数的数字。加上正好等于sqrt(l)
当k>3的时候,可以用下面的方法实现:

			s*=i; K++;
			if(mp[s]) continue; mp[s] = 1;
			if(K >= k) cnt++;
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+5;
map<ll, bool> mp; 
ll zt, tot, cnt,k,r;
void init(ll n){
	for(ll i=2;i*i*i<=n;i++){//1e6
		ll s=i*i; ll K = 2;
		while(s<=n/i){
			s*=i; K++;
			if(mp[s]) continue; mp[s] = 1;
			if(K >= k) cnt++;
			ll sq = sqrtl(s); 
			if(sq * sq == s && sq <= (ll)sqrtl(n)) zt++;
			tot++;
		}
	}
}
int main(){	
	cin>>r>>k;
	init(r);
	if(k == 1) cout<<r<<endl;
	else if(k == 3) cout<<tot+1<<endl;
	else if(k == 2) cout<<(ll)sqrtl(r)+tot-zt<<endl;
	else cout<<cnt+1<<endl;
	return 0;
}

标签:10,正整数,power,样例,T2,春季,ge,测试,18
From: https://www.cnblogs.com/caterpillor/p/17255334.html

相关文章

  • 白盒测试
     1白盒测试2测数据库?软件测试怎么刷数据库早读 晚读。学习就是快乐。人生就是学习。活到老,学到老。学cad建筑制图。想学都能学会。我喜欢截图知识点,那就记住。 ......
  • 《渗透测试》WEB攻防-Python考点&CTF与CMS-SSTI模版注入&PYC反编译 2022 Day23
    1     1PY反编译-PYC编译文件反编译源码1.1pyc文件是py文件编译后生成的字节码文件(bytecode),pyc文件经过python解释器最终会生成机器码运行。因此pyc文......
  • Vulnhub之HackNos 1详细测试过程
    HackNos1识别目标主机IP地址(kali㉿kali)-[~/Vulnhub/HackNos1]└─$sudonetdiscover-ieth1-r192.168.56.0/24Currentlyscanning:192.168.56.0/24|Scr......
  • java-使用jmh基准测试框架比较五种字符串拼接性能
    java-使用jmh基准测试框架比较五种字符串拼接性能引言Java中提供了5种字符串拼接的方法,使用+拼接字符串是最长见的方法。除此还有StringBuilder、StringBuffer、MessageForm......
  • 机载 ARAIM 算法测试技术研究附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • Vulnhub之HackNos 2靶机详细测试过程
    HackNos2作者:jasonhuawen靶机信息名称:hackNos:Os-hackNos-2.1地址:https://www.vulnhub.com/entry/hacknos-os-hacknos-21,403/识别目标主机IP地址─(kali㉿kali......
  • 如今软件测试人员的作用和重要性
    在软件开发领域中,测试人员是至关重要的一环。他们的主要职责是通过各种测试方法来检测和识别软件缺陷,确保软件在发布之前达到高质量标准。那么今天就由我来为大家介绍一下,软......
  • MongoDB官方性能测试报告:YCSB测试下的并发量提升
    1.前言MongoDB3.0的主要侧重点是提高性能,尤其是写性能和对硬件资源的利用率。为了展示我们在3.0中取得的成果和如何来应用这些新的改善,我们接下来将发布一系列博客来比较......
  • 密码引擎-2-电子钥匙功能测试
    一、在Ubuntu中运行“龙脉密码钥匙驱动实例工具等\mToken-GM3000\skf\samples\linux_mac”中例程,提交运行结果截图二、运行“龙脉密码钥匙驱动实例工具等\mToken-GM30......
  • Markdown语法说明及测试一览表(转载)
    Markdown目录在文中放置[toc]Markdown标题在标题前放置1~6个#号一级标题二级标题三级标题四级标题五级标题六级标题Markdown段落格式常用通用部分......