因为最多有1000位数字,所以要用字符串或高精,为了方便当然要用字符串了。
当一个数偶数位上的数字的和减去奇数位上的数字的和的差能被11整除时,它就是11的倍数。
举个例子:
- 2937偶数位上的和为9+7=16,奇数位上的和为2+3=5,两者的差为16-5=11,所以它是11的倍数
- 112234偶数位上的和为1+2+4=7,奇数位上的和为1+2+3=6,两者的差为7-6=1,所以它不是11的倍数
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
while(1)
{
cin>>s;
if(s=="0")return 0;//如果是0则退出
long long l=0;//l表示总的差
cout<<s;
for(int i=0;i<s.size();i++)
{
if(i%2)l+=s[i]-'0';else l-=s[i]-'0';//如果是偶数位则加上这个数字,否则减去这个数字
}
if(l%11==0)printf(" is a multiple of 11.\n");else printf(" is not a multiple of 11.\n");//判断
}
}