描述
判断一堆数字中,是否有某两个数的和是3的倍数
输入
一个正整数n,表示数字的个数。(n<=100000)
然后是n个整数。
输出
如果这n个整数中,存在某两个数字的和恰好是3的倍数,那么输出Yes,否则输出No。不要换行。
样例输入
3
3 4 5
样例输出
Yes
#include<iostream>
using namespace std;
int main()
{
int n, a,b,i=0,cnt0=0,cnt1=0,cnt2=0;
cin >> n;
while (i < n)
{
cin >> a;
i++;
if (a % 3 == 0)
{
cnt0++;
}
if (a % 3 == 1)
{
cnt1++;
}
if (a % 3 == 2)
{
cnt2++;
}
}
if (cnt0>=2 || (cnt1>=1&&cnt2>=1))
cout << "Yes";
else
cout << "No";
return 0;
}
总结思路:
①将所有的数按除以3的余数分为三类,余数为0,余数为1,余数为2,分别统计其数量为cnt0,cnt1,cnt2。
②“存在某两个数字的和恰好是3的倍数”意为有两个以上的余数为1的数或者是有至少1个余数为0的数与至少一个余数为2的数,输出Yes;
③否则输出No。
要点:将两个数的和转化为数的个数。