1. 程式人生 > >判斷一個整數是否能被11整除

判斷一個整數是否能被11整除

如果一個整數在整型範圍內,直接用求餘符號就能搞定,但是如果這個整數比較大就要另尋他路了。        有一種演算法叫做“奇偶位差法”,意思就是在奇數位上的數字和與偶數位上的數字和做差,如果這個差的絕對值能被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;
}