zoukankan      html  css  js  c++  java
  • HDU5373 The shortest problem (YY)

    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_JUDGE
        FIN;
    //    FOUT;
    #endif
        int 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
    ", ++cas, dif % 11 ? "No" : "Yes");
        }
        return 0;
    }
    
  • 相关阅读:
    Rsync算法
    java学习之异常
    多边形的扫描转换(一)X扫描线算法
    区域填充算法
    直线绘制的三个著名的常用算法(二)中点画线法
    Dev C++图形环境配置
    直线绘制的三个著名的常用算法(三)Bresenham算法
    直线绘制的三个著名的常用算法(一)数值微分法(DDA)
    反走样
    网课——计算机图形学(第一课)
  • 原文地址:https://www.cnblogs.com/gj-Acit/p/4724578.html
Copyright © 2011-2022 走看看