HDU

来源:互联网 发布:js添加属性checked 编辑:程序博客网 时间:2024/05/23 18:53

题目大意就是给你个数要你求是不是73和137的倍数,稍微做个计算就是求给的这个数%10001等不等于0

一看题哇哈哈哈水题赶快切,结果没看见N可以有那么大,得用字符数组存。。。

然后一个一个处理太慢了,一次要处理就要处理好几位才划算嘛,处理多少位好呢,每次都是%10001,那么最大就是处理16-4=12位

代码

#include<iostream>#include<cstring>#include<cstdio>using namespace std;char s[10000005];int main(){    int cas=1;    int temp=137*73;    while(~scanf("%s",s))    {        long long ans=0;        int len=strlen(s);        if(len<=12)                    //小于12位直接处理干净            for(int i=0;i<len;i++)                ans=ans*10+s[i]-'0';        else        {            int l=len%12;                       if(len)            {                for(int i=0;i<l;i++)                    ans=ans*10+s[i]-'0';            }            for(int i=l;i<len;i+=12)            {                ans%=temp;            提前%防止爆掉                for(int j=i;j<i+12;j++)                    ans=ans*10+s[j]-'0';            }        }        ans%=temp;        if(ans)        printf("Case #%d: NO\n",cas++);        else        printf("Case #%d: YES\n",cas++);    }    return 0;}


原创粉丝点击