当前位置:首页 > 题解目录 > 正文内容

【题解】最大平方因子

亿万年的星光1年前 (2024-07-23)题解目录2089

【题目描述】

给定一个整数 n,请找出 n 的最大平方因子。所谓平方因子,就是一个 n 的因子,且是一个完全平方数。最大平方因子就是 n 的所有平方因子中最大的数。

如 12的最大平方因子为 4,81 的最大平方因子为其本身,21 的最大平方因子为 1。

【输入描述】

单个整数表示 n。

【输出描述】

单个整数表示 n 的最大平方因子。

【样例输入1】

12

【样例输出1】

4

【样例输入2】

81

【样例输出2】

81

【样例输入3】

21

【样例输出3】

1

【数据范围】

  • 对于 50% 的数据,1≤n≤10000;

  • 对于 100% 的数据,1≤n≤10,000,000。


【题目分析】

注意完全平方因子的概念即可。完全平方因子,首先是因子,其次是完全平方数,最后是这些中最大的那个。


【参考代码】

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n=0,ans=0;
	int t=0; //临时值
	cin >> n;
	for (int i = 1; i  <= n; i++) {
		if(n%i==0){
			//说明i是因数,
			t = sqrt(i);
			if(t*t==i){
				ans=t*t;  //一直成立,取最后一个
			}
		}
	}
	cout << ans << endl;
	return 0;
}


或者反着来,这样找最大的速度会快一些

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n=0,ans=0;
    int t=0; //临时值
    cin >> n;
    for (int i = n; i  >= 1; i--) {
        if(n%i==0){
            //说明i是因数,
            t = sqrt(i);
            if(t*t==i){
                ans=t*t;
                break;
            }
        }
    }
    cout << ans << endl;
    return 0;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】游览动物园

【题目描述】动物园有很多游览区,小红已经在动物园的一个游览区游览,突然接到电话,要半个小时内到动物园外面跟一个朋友见面。半个小时小红只够游览完当前区域之后,游览一个最近的景区。已知从一个游览区域只能沿...

【题解】最大数问题

【题目描述】输入若干个整数。输出其中的最大数【输入描述】若干个整数。【输出描述】其中的最大数。【样例输入】1 2 5 7 8 6 1&nbs...

【题解】求车速问题

【题目描述】一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数。问该车的速度是多...

【题解】2019 T2 公交换乘

【题目描述】著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案:1、在搭乘一次地铁后可以获得一张优惠票,有效期为 45 分钟,在有效期内可以消耗这张优惠...

【题解】黑色联通块

【题解】黑色联通块

【题目描述】输入一个n×n的黑白图像(1表示黑色,0表示白色),任务是统计其中黑色连通块的个数。如果两个黑格子有公共边或者公共顶点,就说它们属于同一个联通块。如下图所示的图形有3个联通块。【输入描述】...

【题解】约瑟夫问题2

【题解】约瑟夫问题2

【题目描述】M个人围成一圈,每分钟相邻的两个人可以交换位置(只能有一对交换)。求使M个人的顺序颠倒(即每个人左边相邻的人换到右边,右边相邻的人换到左边)所需的最少时间(分钟数)。【输入描述】 ...