Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 893 Accepted Submission(s): 407
A integer X can be represented in decimal as:
X=An×10n+An−1×10n−1+…+A2×102+A1×101+A0
The odd dights are A1,A3,A5… and A0,A2,A4… are even digits.
Hanamichi comes up with a solution, He notices that:
102k+1 mod 11 = -1 (or 10), 102k mod 11 = 1,
So X mod 11
= (An×10n+An−1×10n−1+…+A2×102+A1×101+A0)mod11
= An×(−1)n+An−1×(−1)n−1+…+A2−A1+A0
= sum_of_even_digits – sum_of_odd_digits
So he claimed that the answer is the number of numbers X in the range which satisfy the function: X mod 11 = 3. He calculate the answer in this way :
Answer = (r + 8) / 11 – (l – 1 + 8) / 11.
Rukaw heard of Hanamichi’s solution from you and he proved there is something wrong with Hanamichi’s solution. So he decided to change the test data so that Hanamichi’s solution can not pass any single test. And he asks you to do that for him.
#include <stdio.h> #include <math.h> #include <iostream> #include <algorithm> #include <string.h> #include <vector> using namespace std; typedef long long LL; bool judge(LL x){ LL bit[20]; int t = 0; while(x){ bit[t++] = x%10; x/=10; } LL odd=0,even=0; for(int i=0;i<t;i+=2){ odd+=bit[i]; } for(int i=1;i<t;i+=2){ even+=bit[i]; } if(odd-even==3) return true; return false; } int main() { int tcase; scanf("%d",&tcase); while(tcase--){ LL l,r; scanf("%lld%lld",&l,&r); LL ans = -1,x=0; for(LL i=l;i<=r;i++){ LL temp = (i+8)/11- (l-1+8)/11; if(judge(i)){ x++; } if(x!=temp){ ans = i; break; } } printf("%lld\n",ans); } }