山东省第八届ACM大赛I题题解

来源:互联网 发布:金万维免费域名 编辑:程序博客网 时间:2024/05/18 04:00

奇数加偶数等于奇数,偶数加偶数、奇数加奇数等于偶数,观察规律得凡可被3整除者皆是偶数,故题转为判断n是否可被三整除。n为10^1000,int肯定不行。由数学原理知各位数相加可被3整除的数可被三整除,因此定义一个1000的字符数组存储n,用ans记录各位数之和,最后根据ans%3判断奇偶性。

附上AC代码 Time 0ms Memory 164kb

OJ地址 http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/3901.html

#include<cstdio>#include<cstring>using namespace std;const int maxn=1000+10;char s[maxn];int num(){    int ans=0;    for(int i=0;i<strlen(s);i++)        ans+=(s[i]-'0');    return ans;}int main(){    while(scanf("%s",s)==1)    {        int n=num();        if(n%3==0) printf("0\n");        else printf("1\n");    }    return 0;}


1 0
原创粉丝点击