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

【题解】最大平方因子

亿万年的星光2个月前 (07-23)题解目录142

【题目描述】

给定一个整数 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;
}


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

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

分享给朋友:

相关文章

整理药名

【题目描述】医生在书写药品名的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其他字母小写。如将ASPIRIN、...

【题解】感应门

【题目描述】感应门会在有人经过的时候自动打开,冷却d 秒后自动关闭。如果有人在感应门打开的状态下通过,那么冷却时间会重置,重新冷却d秒后再关闭。在一段时间内,有 n个人陆续通过了感应门,他们...

【题解】奇偶校验

【题目描述】奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数 是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。现在给...

字符串移位包含问题

【题目描述】对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。给定两个字符串 s_1s1 和 s_2s2,要求判定其中一个字符串是...

【题解】东哥的杯子

【题解】东哥的杯子

【题目描述】话说在一场牛客练习赛中,东哥力压群雄,挣得第一,牛客为了奖励东哥的发挥,送他一个马克杯。奖励的马克杯是一个标准的圆台形状,它的上底为R1,下底为R2,高为H, 东哥向杯子里倒V毫升的水,你...

数的拆分(1)

【题目描述】任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。例如:当n=7时7=1+1+1+1+1+1+1 7=1+1+1+1+1+2 7=1+1+1+1+3 7=1+1+1+2...