http://acm.hdu.edu.cn/showproblem.php?pid=5585
Numbers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
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<1030)
For each case,the line contains a integer N. (0<N<1030)
Output
For each test case,output the answer in a line.
Sample Input
2 3 5 7
Sample Output
YES YES YES NO
题目大意:如果n能被2,3,5中的一个数整除就输出YES,否则输出NO
我才不会说我被吓怕了,直接高精度模版过的...
仔细想想,2,3,5都很特殊
只要末尾为偶数就能被2整除
只要末尾为0或5就能被5整除
只要所有位的数字之和能被3整除,则该数就能被3整除
#include <cstdio>
#include <cstring>
using namespace std;
int len,sum,i;
char s[31];
int main() {
while(1==scanf("%s",s)) {
len=strlen(s);
sum=s[len-1]-'0';
if(sum%2==0||sum%5==0)
printf("YES\n");
else {
for(i=len-2;i>=0;--i)
sum+=s[i]-'0';
printf("%s\n",sum%3==0?"YES":"NO");
}
}
return 0;
}