请求帮忙,PAT大美数,输出感觉没问题,但是都错了QAQ
【PAT】
若正整数 N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。
输入格式:
输入在第一行中给出正整数 K(≤10),随后一行给出 K 个待检测的、不超过 1 0000的正整数。
输出格式:
对每个需要检测的数字,如果它是大美数就在一行中输出 Yes,否则输出 No。
输入样例:
3 18 29 40
输出样例:
Yes No Yes
这是一道PAT的乙级题目,限时估计要在半小时以内。我了一个小时,用C#写的,但是答案错误,我想看看有没有大神帮我看看我的程序是哪里的问题。
using System;
using System.Collections.Generic;
class Thousand1
{
static void Main()
{
int num =int.Parse(Console.ReadLine());
string[] strs = Console.ReadLine().Split(' ');
for (int i = 0; i < num; i++)
{
if (IsBeautifulNum(int.Parse(strs[i])) == true)
{
Console.WriteLine("Yes");
}
else Console.WriteLine("NO");
}
Console.ReadKey();
}
static bool IsBeautifulNum(int m)
{
List<int> nums = new List<int>();
for (int i = 1; i <= m; i++)
{
if (m % i == 0)
{
nums.Add(i);
}
}
for (int a = 0; a < nums.Count-3; a++)
{
for (int b = a + 1; b < nums.Count - 2; b++)
{
for (int c = b + 1; c < nums.Count - 1; c++)
{
for (int d = c + 1; d < nums.Count; d++)
{
int numAdd = nums[a] + nums[b] + nums[c] + nums[d];
if ( numAdd%m== 0) return true;
}
}
}
}
return false;
}
}
#笔试题目##春招##C/C++#using System.Collections.Generic;
class Thousand1
{
static void Main()
{
int num =int.Parse(Console.ReadLine());
string[] strs = Console.ReadLine().Split(' ');
for (int i = 0; i < num; i++)
{
if (IsBeautifulNum(int.Parse(strs[i])) == true)
{
Console.WriteLine("Yes");
}
else Console.WriteLine("NO");
}
Console.ReadKey();
}
static bool IsBeautifulNum(int m)
{
List<int> nums = new List<int>();
for (int i = 1; i <= m; i++)
{
if (m % i == 0)
{
nums.Add(i);
}
}
for (int a = 0; a < nums.Count-3; a++)
{
for (int b = a + 1; b < nums.Count - 2; b++)
{
for (int c = b + 1; c < nums.Count - 1; c++)
{
for (int d = c + 1; d < nums.Count; d++)
{
int numAdd = nums[a] + nums[b] + nums[c] + nums[d];
if ( numAdd%m== 0) return true;
}
}
}
}
return false;
}
}