码迷,mamicode.com
首页 > 其他好文 > 详细

扩展哈夫曼编码

时间:2015-09-04 16:53:10      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

POJ1061 青蛙的约会

技术分享

 

#include <stdio.h>
#include <iostream>
using namespace std;

int gcd(long long m, long long n)
{
    if(n == 0)
        return m;
    return gcd(n, m%n);
}

void Cal(long long a, long long b, long long &x, long long &y)  // ax + by = gcd(a,b)
{
    if(b == 0)
    {
        x = 1;
        y = 0;
        return ;
    }
    Cal(b, a%b, x, y);
    long long temp_x = x;
    long long temp_y = y;

    x = temp_y;
    y = temp_x - a/b*y;
    return ;
}

int main()
{
    long long x, y, m, n, l;                                    // (n-m)*i + l*k = x-y
    scanf("%lld%lld%lld%lld%lld", &x, &y, &m, &n, &l);

    if((x-y) % gcd((n-m),l))
        printf("Impossible\n");
    else
    {
        long long i, k;                                         // i次跳跃, k个完整圈
        Cal(n-m, l, i, k);                                      // (n-m)*i + l*k = gcd((n-m),l)

        i = ((x-y)/gcd((n-m),l) * i) % l;
        if(i < 0)
            i += l;
        printf("%lld\n", i);
    }
    return 0;
}

 

扩展哈夫曼编码

标签:

原文地址:http://www.cnblogs.com/1203ljh/p/4781843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!