HDU-5832 A water problem(特殊的取模方法)

    xiaoxiao2025-05-22  10

    

    A water problem

    Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 173    Accepted Submission(s): 92 Problem Description Two planets named Haha and Xixi in the universe and they were created with the universe beginning. There is 73 days in Xixi a year and 137 days in Haha a year. Now you know the days N after Big Bang, you need to answer whether it is the first day in a year about the two planets.   Input There are several test cases(about 5 huge test cases). For each test, we have a line with an only integer N(0N) , the length of N is up to 10000000 .   Output For the i-th test case, output Case #i: , then output "YES" or "NO" for the answer.   Sample Input 10001 0 333   Sample Output Case #1: YES Case #2: YES Case #3: NO   本题题意:求N对10001取模是否为零。 题解:一般的取模方法会超时,因为输入的大整数的长度为10000000,这里必须用特殊的分段取模方法 代码如下: #include<string.h> #include<stdio.h> #include<stdlib.h> #include<stack> #include<math.h> #include<queue> #include<algorithm> using namespace std; #define mods 10001 #define maxn 10000005 int a[maxn]; char s[maxn]; int main() { int l,i,j,len,k,t,cases=0; while(scanf("%s",s)!=EOF) { len=strlen(s); j=0; for(i=len-1; i>=0; i-=4) { a[j]=0; for(k=i-3; k<=i; k++) if(k>=0) a[j]=a[j]*10+s[k]-'0'; j++; } int mod=0; for(i=0; i<j; i++) mod=(mod*10000+a[i])%mods; if(mod) printf("Case #%d: NO\n",++cases); else printf("Case #%d: YES\n",++cases); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1299143.html
    最新回复(0)