HDU 1098 [Ignatius's puzzle] 数论

Posted 哇咔咔咔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1098 [Ignatius's puzzle] 数论相关的知识,希望对你有一定的参考价值。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1098

题目大意:f(x)=5x^13+13x^5+kax. 给出k,求a使得对任意x,满足f(x)是65的倍数

关键思想:f(x)要是65的倍数,需满足f(x)既是5的倍数又是13的倍数。

1.f(x)为5的倍数需满足

        f(x) % 5 = 0

5x^13+13x^5+kax % 5 = 0

    x(13x^4+ka) % 5 = 0  对任意x成立

        13+ka % 5 = 0  //费马小定理

      3 +ka % 5 = 0  

        ka % 5 = 2

2.f(x)为13的倍数需满足

      同理得ka % 13=8

于是升序遍历a,若满足以上两个条件,则输出。a最多为64,因为%65有一个循环

代码如下:

#include <iostream>
using namespace std;

int main(){
    int k;
    while(cin>>k){ 
        int a;
        for(a=0;a<65;a++){//f(x)%65,故kax里的a不会大于65 
            if(k*a%5==2&&k*a%13==8){//f(x)要是5的倍数也要13的倍数,分析结合费马小定理。
                cout<<a<<endl;
                break;
            }
        }
        if(a==65)cout<<"no"<<endl;//没找到 
    }
    return 0;
} 

 

以上是关于HDU 1098 [Ignatius's puzzle] 数论的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1098 Ignatius's puzzle 也不大懂

HDU 1098 [Ignatius's puzzle] 数论

HDU - 1098 - Ignatius's puzzle - ax+by=c

hdu1098费马小定理

hdu 1028 Ignatius and the Princess III

hdu 1027 Ignatius and the Princess II