题解 UVA10929 【You can say 11】

题目传送门
因为最多有1000位数字,所以要用字符串或高精,为了方便当然要用字符串了。

当一个数偶数位上的数字的和减去奇数位上的数字的和的差能被11整除时,它就是11的倍数。

举个例子:

  1. 2937偶数位上的和为9+7=16,奇数位上的和为2+3=5,两者的差为16-5=11,所以它是11的倍数
  2. 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");//判断
    }
}

猜你喜欢

转载自www.cnblogs.com/pzc2004/p/11600845.html