首页 > 其他 > 详细

扩展哈夫曼编码

时间:2015-09-04 16:51:21      阅读:685      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!