Problem Description
There is a number N.You should output "YES" if N is a multiple of 2, 3 or 5,otherwise output "NO".
Input
There are multiple test cases, no more than 1000 cases.
For each case,the line contains a integer N.(0<N<10^30)
Output
For each test case,output the answer in a line.
Sample Input
2 3 5 7
Sample Output
YES YES YES NO
题意:
水题。但是要注意的是N是小于10^30,非常大,所以可以用字符数组来存储。
如果N的各个位的数字之和%3==0,那么就是3的倍数。
例:
123%3==0 ,1+2+3=6%3==0
789%3==0 ,7+8+9=24%3==0
55%3!=0 ,5+5=10%3!=0
如果N的个位数%2==0,那么就是2的倍数。
如果N的个位数%5==0,那么就是5的倍数。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
char s[107];
while(scanf("%s",s)!=EOF)
{
int len=strlen(s);
int sum=0;
for(int i=0;i<len;i++)
sum+=(s[i]-'0');
if(sum%3==0) //如果n各个位数字之和可以除尽3,说明是3的倍数
printf("YES\n");
else if((s[len-1]-'0')%2==0||(s[len-1]-'0')%5==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}