判断一个整数是否能够被11整除?
如果这个数是在整数范围内就直接可以用%来求了,但是如果这个大数呢?无法用整数所能表示的范围内该怎么处理?
这是可以利用小学的数学知识“奇偶位差法”:把整数中的奇数位上的数字和与偶数位上的数字和做差,如果这个差的绝对值能被11整除,那么这个数字就可以被11整除。
代码:
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int judge(string s)
{
int n = s.length();
int Uneven = 0, Even = 0;
for (int i = 0; i < n; i++)
{
if (i % 2 == 0)
Even += (s[i] - '0');
else
Uneven += (s[i] - '0');
}
return abs((Even - Uneven) % 11);
}
int main()
{
string Integer;
getline(cin, Integer);
if (!judge(Integer))
{
cout << "Yes" << endl;
}
else
cout << "No" << endl;
return 0;
}