【PAT 】——【简单数学】1096 大美数 (四层循环)

文章描述了一种被称为大美数的正整数,即能被其四个不同正因数之和整除的数。文章提供了输入格式、输出格式的示例,并详细解释了解题思路,包括使用四层循环来寻找因数。接着,给出了C++代码实现,用于检测输入的正整数是否为大美数。
摘要由CSDN通过智能技术生成

目录

一【题目描述】

二【题目示例】

三【解题思路】

四【代码实现】


一【题目描述】

    若正整数 N N N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。

二【题目示例】

    输入格式:
    输入在第一行中给出正整数 K ( ≤ 10 ) K(≤10) K(≤10),随后一行给出 K K K 个待检测的、不超过 1 0 4 10^4 104 的正整数。

    输出格式:
    对每个需要检测的数字,如果它是大美数就在一行中输出 Yes,否则输出 No。

    输入样例:
    3
    18 29 40

    输出样例:
    Yes
    No
    Yes

三【解题思路】

    1.四层for循环

    2.10可以被5整除,5可以整除10,注意整除的理解,不然写反了只能13分

 

四【代码实现】

#include<iostream>
#include<cstdio>
using namespace std;
bool isBeauty(int x){
	int a[1000];
	int index=0;
	for(int i=1;i<=x;i++){
			if(x%i==0){
				a[index++]=i;	
			}
		}
	if(index<4) return false;
	for(int i=0;i<index;i++){
			for(int j=i+1;j<index;j++){
				for(int k=j+1;k<index;k++){
					for(int z=k+1;z<index;z++){
						int sum=a[z]+a[k]+a[j]+a[i];
						if(sum%x==0) return true;
					}
				} 
		}
	}
	return false;

}

int main(){
	int n;cin>>n;
	while(n--){
		int x;
		scanf("%d",&x);
		if(isBeauty(x)) printf("Yes\n");
		else  printf("No\n");
		
	}	
} 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值