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

题目中文是这样的:

  伊格内修斯在数学上很差,他遇到了一个难题,所以他别无选择,只能上诉埃迪。 这个问题描述:f(x)= 5 * x ^ 13 + 13 * x ^ 5 + k * a * x,输入一个非正整数k(k <10000),找到最小非负整数a, 使得任意的整数x,65 | f(x)如果不存在那个a,就打印“否”。

输入

  输入包含多个测试用例。 每个测试用例由非负整数k组成,样例输入中有更多详细信息。

输出

  输出包含一个字符串“no”,如果找不到a,或者您应该输出一行包含示例输出中的a.More详细信息。

解题思路:题目的意思就是:给定f(x)=5*x^13+13*x^5+k*a*x,现给出非负整数k ,求取任意x都能使f(x)%65==0成立的最小非负整数a。这道题采用数学归纳法:当x=0时,f(0)=0能够被65整除,即0/65==0,假设f(x)%65==0,则只需证明f(x+1)%65==0,即对于任意的整数x都成立。

下面证明f(x+1)%65==0成立:

因为f(0)=0 能被65整除, 假设(f(1)=18+ka)%65==0,当f(x)能整除65,那么f(x+1)=f(x)+5*[C(13,1)x^12+……+C(13,13)x^0]+13*[C(5,1)x^4……+C(5,5)x^0]+ka=f(x)+5*[C(13,1)x^12+……+C(13,12)x^1]+13*[C(5,1)x^4……+C(5,4)x^1]+18+ka。(二项式展开式)可以发现除(18+ka)这项之外,其他的都能被65整除,所以要使f(x+1)%65==0这个等式成立,只需满足(18+ka)%65==0即可(这是一个必要不充分条件)。

好了,现在问题转化为求(18+ka)%65的那个最小非负整数a,因为k最小取1,即k=1时,a最大能取到65,所以只需枚举a到65即可,若a大于65则输出"no"。

这里证明为什么a只需枚举到65:第一点:当k%65==0时,18+k*a是永远除不尽65的,第二点:k%65!=0时,那么a就从1开始枚举,不断地尝试18+k*a是否能除尽65,找到即止。当a==65,也就是已经找了一个周期了,再找下去也找不到适当的a了,所以a只需枚举到65即可。

AC代码:

 #include<bits/stdc++.h>
using namespace std;
int main()
{
int k,a;
while(cin>>k){
for(a=;a<=;a++)
if((+k*a)%==){cout<<a<<endl;break;}
if(a>)cout<<"no"<<endl;
}
return ;
}

题解报告:hdu 1098 Ignatius's puzzle的更多相关文章

  1. HDU 1098 Ignatius's puzzle

    http://acm.hdu.edu.cn/showproblem.php?pid=1098 题意 :输入一个K,让你找一个a,使得f(x)=5*x^13+13*x^5+k*a*x这个f(x)%65等 ...

  2. 数学--数论--HDU 1098 Ignatius's puzzle (费马小定理+打表)

    Ignatius's puzzle Problem Description Ignatius is poor at math,he falls across a puzzle problem,so h ...

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

    http://acm.hdu.edu.cn/showproblem.php?pid=1098 其实一开始猜测只要验证x=1的时候就行了,但是不知道怎么证明. 题解表示用数学归纳法,假设f(x)成立,证 ...

  4. HDU 1098 Ignatius's puzzle(数学归纳)

    以下引用自http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=8466&messageid=2&deep=1 题意以 ...

  5. HDU 1098 Ignatius's puzzle 费马小定理+扩展欧几里德算法

    题目大意: 给定k,找到一个满足的a使任意的x都满足 f(x)=5*x^13+13*x^5+k*a*x 被65整除 推证: f(x) = (5*x^12 + 13 * x^4 + ak) * x 因为 ...

  6. hdu 1098 Ignatius's puzz

    有关数论方面的题要仔细阅读,分析公式. Problem Description Ignatius is poor at math,he falls across a puzzle problem,so ...

  7. HDOJ 1098 Ignatius's puzzle

    Problem Description Ignatius is poor at math,he falls across a puzzle problem,so he has no choice bu ...

  8. 【HDOJ】1098 Ignatius's puzzle

    数学归纳法,得证只需求得使18+ka被64整除的a.且a不超过65. #include <stdio.h> int main() { int i, j, k; while (scanf(& ...

  9. 数学: HDU1098 Ignatius's puzzle

    Ignatius's puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

随机推荐

  1. Java第二次作业參考代码

    Java第二次作业參考代码 [程序11] 题目:有1.2.3.4四个数字,能组成多少个互不同样且无反复数字的三位数?都是多少? public class lianxi11 { public stati ...

  2. Scrum 常见错误实践 之 形式化的站会

    站会作为一个团队最容易实施的敏捷实践,为广大team leader和老板们所喜欢,但大部分程序员却很抵触.其主要原因就是很多时候站会都流于形式,没能帮助团队成员解决问题.改进效率. 一种常见的情况就是 ...

  3. ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理

    ASP.NET没有魔法——ASP.NET MVC Razor与View渲染   对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...

  4. csv读入数据,用julia/matplotlib/pyplot 画矢量图导入word中

    这是是用julia来实现画图.julia有三个画图库:Winston.Gadfly.PyPlot 这里用的是pyplot,事实上他是基于matplotlib的 1.首先在juno里安装两个库 juno ...

  5. HDU 3469 Catching the Thief (博弈 + DP递推)

    Catching the Thief Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  6. ubuntu字符界面下显示中文和调整分辨率

    1.sudo apt-get install zhcon 2.vi /etc/zhcon.conf  修改下面两行 x_resolution 1024 y_resolution 768 完成这两步后在 ...

  7. html页面内锚点定位及跳转方法总结

    1.最简单的方法是锚点用<a>标签,在href属性中写入DIV的id.如下: <!DOCTYPE html><html><head><style& ...

  8. mysql 查看编码方式

    一. 查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+--------+ | Va ...

  9. ThreadLocal工具类的使用(隔离思想)

    ThreadLocal不是用来解决共享对象的多线程访问问题的, 通过ThreadLocal的set()方法设置到线程的ThreadLocal.ThreadLocalMap里的是是线程自己要存储的对象, ...

  10. ie7 总结

    1 ie7 对部分属性选择器严重区分大小写 在HTML中,属性名,例如id, title之类是不区分大小写的,CSS中的选择器也应该是如此.但是IE7对属性名是严格区分大小写的! 2 关于属性选择器, ...