http://acm.hdu.edu.cn/showproblem.php?pid=5373
/************************************************
* Author :Powatr
* Created Time :2015-8-12 9:23:18
* File Name :1003.cpp
************************************************/
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std;
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int MAXN = 1e5 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
int sum(int x)
{
int m = 0;
while(x){
m += x%10;
x/=10;
}
return m;
}
int fact(int x)
{
int m = 1;
for(int i = 1; i <= x; i++)
m *= 10;
return m;
}
int bit(int x)
{
int m = 0;
while(x){
m++;
x/=10;
}
return m;
}
int main(){
int n, m;
int ss;
int su;
int cas = 1;
while(~scanf("%d%d", &n, &m)){
if(n == m && n == -1) break;
ss = n%11;
su = sum(n);
for(int i = 1; i <= m; i++){
// printf("%d
", ss*fact(bit(su)));
ss = (ss*fact(bit(su)) + su) % 11;
su += sum(su);
}
printf("Case #%d: ", cas++);
if(ss == 0) printf("Yes
");
else printf("No
");
}
return 0;
}
还有一个性质:被11整除的数奇偶位和之差能被11整除