andre_joy

导航

hdu 1098

地址:http://acm.hdu.edu.cn/showproblem.php?pid=1098

题意:给定k,求满足任何x都能使f(x)能被65整除的a的值。

mark:本题要用欧拉定理,一开始完全不会啊。。。欧拉定理证明http://baike.baidu.com/view/48903.htm

      从65着手。65=13*5,所以要f(x)被65整除,那么f(x)一定整除13和5。

    先考虑13。f(x)=13*x^5 + 5*x^13 + k*a*x,13*x^5显然是13的倍数。所以只用考虑5*x^13+k*a*x = x*(5*x^12+k*a)。

     1.当x能被13整除的时候,不用考虑后面的了。

   2.然后由欧拉函数φ(13)=12,所以由欧拉定理得:x^12%13 ≡ 1。故只用k*a%13 ≡ 8。

    同理考虑5。k*a%5 ≡ 2。

代码:

#include <stdio.h>

int main()
{
    int tab[5] = {0,2,1,4,3};
    int k,a;
    while(~scanf("%d", &k))
    {
        if(k%5 == 0 || k%13 == 0) puts("no");
        else
        {
            for(a = tab[k%5]; ; a += 5)
                if(k*a%13 == 8) break;
            printf("%d\n", a);
        }
    }
    return 0;
}

 

 

posted on 2012-07-03 21:38  andre_joy  阅读(74)  评论(0编辑  收藏  举报