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; }