2019春季考试 大美数

Posted genghongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019春季考试 大美数相关的知识,希望对你有一定的参考价值。

7-1 大美数 (15 分)

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

输入格式:

输入在第一行中给出正整数 K(10),随后一行给出 K 个待检测的、不超过 10?4?? 的正整数。

输出格式:

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

输入样例:

3
18 29 40

输出样例:

Yes
No
Yes




 1 #include<cstdio>
 2 #include<cmath>
 3 int isBeautiful(int m){
 4     int b[70];
 5     int temp=0;//如果是大美数字,则为,否则为0. 
 6     int j=0;
 7     for(int i=1;i<=m;i++){
 8         if(m%i==0){
 9             b[j]=i;
10             j++;
11         }
12     } 
13     
14     //j是数组的程度,遍历输入m的正因数。 
15 //    for(int i=0;i<70;i++){
16 //        printf("%d   ", b[i]);
17 //    }
18 //    printf("
");//遍历输出m的正因数,以作检验。 
19  
20     for(int w=0;w<j-3;w++){
21         for(int x=w+1;x<j-2;x++){
22             for(int y=w+2;y<j-1;y++){
23                 for(int z=w+3;z<j;z++){
24                     int sum=b[w]+b[x]+b[y]+b[z];
25                     if(m%sum==0)temp=1;
26                 }
27             }
28         }
29     }//四重循环秘技。 
30     return temp;
31 } 
32 int main(){
33     int n;
34     scanf("%d", &n);
35     int a[n];
36     for(int i=0;i<n;i++){
37         scanf("%d", &a[i]); 
38         if(isBeautiful(a[i])==1){
39             printf("Yes
");
40         }
41         else{
42             printf("No
");
43         }
44     }
45     return 0;
46 } 

 

以上是关于2019春季考试 大美数的主要内容,如果未能解决你的问题,请参考以下文章

PAT(甲级)2019年春季考试 7-4 Structure of a Binary Tree

PAT(甲级)2019年春季考试 7-2 Anniversary

PAT(甲级)2019年春季考试 7-3 Telefraud Detection

2019春季总结

PAT(甲级)2020年春季考试 7-2 The Judger

PAT(甲级)2017年春季考试