如果一个整数在整型范围内,直接用求余符号就能搞定,但是如果这个整数比较大就要另寻他路了。
有一种算法叫做“奇偶位差法”,意思就是在奇数位上的数字和与偶数位上的数字和做差,如果这个差的绝对值能被11整除,那么这个数字就可以被11整除。
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int i,len,sum1,sum2;
char s[10000010];
while(scanf("%s",s) != EOF)
{
sum1 = sum2 = 0;
len = strlen(s);
for(i = 0; i < len; i ++)
{
if(i % 2 == 0)
sum1 += (s[i]-'0');
else
sum2 += (s[i]-'0');
}
if(abs(sum1-sum2) % 11 == 0)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
或者用另一种方法
#include<stdio.h>
#include<string.h>
char s[10000010];
int main()
{
int i,len,ans;
while(scanf("%s",s) != EOF)
{
ans = 0;
len = strlen(s);
for(i = 0; i < len; i ++)
ans = (ans*10 + (s[i]-'0')) % 11;
if(ans == 0)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}