http://acm.hdu.edu.cn/showproblem.php?pid=5373
YY题,模拟下计算过程就好了,计算中并不要保存实际数(这个数会非常大),只要保存到目前为止的数字位上的和 与 奇偶位上的差即可
#pragma comment(linker, "/STACK:1677721600")
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
#include <bitset>
#include <vector>
#include <cstdio>
#include <cctype>
#include <cstdarg>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define inf (-((LL)1<<40))
#define root 1, 1, n
#define lc (k << 1)
#define rc (k << 1 | 1)
#define middle ((L + R) >> 1)
#define lson k<<1, L, (L + R)>>1
#define rson k<<1|1, ((L + R)>>1) + 1, R
#define mem0(a) memset(a,0,sizeof(a))
#define mem1(a) memset(a,-1,sizeof(a))
#define mem(a, b) memset(a, b, sizeof(a))
#define FIN freopen("in.txt", "r", stdin)
#define FOUT freopen("out.txt", "w", stdout)
#define rep(i, a, b) for(int i = a; i <= b; i ++)
#define dec(i, a, b) for(int i = a; i >= b; i --)//typedef __int64 LL;
typedef long long LL;
typedef pair<int, int> Pair;
const int MAXN = 200000 + 100;
const int MAXM = 110000;
const double eps = 1e-10;
LL MOD = 1000000007;int n, t;//将n拆开,数字和加到sum中,奇偶差加到dif中,符号保存在f中
void calc_dif(int n, int &f, int &dif, int &sum) {int d = 0, s = 0, pf = f;while(n) {s += n % 10;d += n % 10 * f;f = -f;n /= 10;}if(f == pf) d *= -1;sum += s;dif += d;
}int main()
{
#ifndef ONLINE_JUDGEFIN;
// FOUT;
#endifint cas = 0;while(cin >> n >> t && (n != -1)) {int f = 1, dif = 0, sum = 0;calc_dif(n, f, dif, sum);while(t--) calc_dif(sum, f, dif, sum);printf("Case #%d: %s\n", ++cas, dif % 11 ? "No" : "Yes");}return 0;
}