费马小定理 hdu 1098
来源:互联网 发布:扫描软件下载 编辑:程序博客网 时间:2024/05/21 14:57
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1098
题意:给出k。求使得f(x)=5*x^13+13*x^5+k*a*x对任意x都为65的倍数的a的最小值。
mark:65=13*5。要使f(x)是65的倍数,只需要f(x)是5和13的倍数即可。先来分析13的。
若f(x)是13的倍数,
有5*x^13+13*x^5+k*a*x % 13 == 0,其中13*x^5项显然不用考虑。
则只需5*x^13 + k*a*x是13的倍数,即x*(5*x^12+k*a)是13的倍数。若x是13的倍数,不用考虑。
若x不是13的倍数,则x一定与13互素,因为EulerPhi(13) == 12,从而x^12 % 13 == 1。
所以可知5*x^12 % 13 == 5。
因为要让任意x满足条件,则括号内必为13的倍数,有k*a+5 % 13 == 0,则k*a % 13 == 8。
同理可得k*a % 5 == 2。
据此,若k为5或13的倍数,a一定无解,否则,一定有解。
根据k%5的结果,可能为1、2、3、4,a应分别取5n+2,5n+1,5n+4,5n+3。
枚举a的值,若符合13的条件,则为解。
# include <stdio.h>int tab5[5] = {0, 2, 1, 4, 3} ;int main (){ int a, k ; while (~scanf ("%d", &k)) { if (k % 5 == 0 || k % 13 == 0) printf ("no\n") ; else { for (a = tab5[k%5] ; ; a+= 5) if (k*a % 13 == 8) break ; printf ("%d\n", a) ; } } return 0 ;}
from 3a's blog http://www.cnblogs.com/lzsz1212/archive/2012/01/06/2315304.html
- 费马小定理 hdu 1098
- hdu 1098-二项式定理
- [费马小定理]hdu 4196
- hdu 4704 费马小定理
- hdu 4704(费马小定理)
- HDU 5407 费马小定理
- hdu 4704 sum 费马小定理
- HDU 5525(Product-费马小定理)
- HDU 4704 Sum 费马小定理
- HDU 3037 lucas + 费马小定理
- HDU - 1098 - Ignatius's puzzle (数论 - 费马小定理)
- hdu 3037 费马小定理+逆元求组合数+Lucas定理
- HDU 5794 A Simple Chess (lucas定理+费马小定理)
- hdu 1098 数学归纳法 二项式定理
- hdu 4704 费马小定理+普通快速幂
- hdu - 4704 - Sum(费马小定理)
- HDU 4704 Sum (费马小定理)
- HDU 4704 Sum 费马小定理+快速幂
- Java面试题之一
- 怎样在ubuntu下写c++程序
- 图片,70后,你懂的
- fvwm使用 2
- xml中xPath的使用
- 费马小定理 hdu 1098
- linux上ln命令详细说明
- 平衡二叉树 实现
- QT 入门 -QApplication QPushButton QDialog Ui类型的手工使用
- 一、cocos2dx之如何优化内存使用(高级篇)
- 高效判断点是否在正六边形蜂窝内的方法
- fvwm 3
- windows 下编译 pwlib 和 openh323
- Java 大数