题目链接: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. Centos7 Samba 独立账户

    创建了一个组:smbgrp 和用户srijan通过认证来访问Samba服务器. groupadd smbgrp useradd srijan -G smbgrp smbpasswd -a srijan ...

  2. sqlzoo练习答案--SELECT within SELECT Tutorial

    This tutorial looks at how we can use SELECT statements within SELECT statements to perform more com ...

  3. 重载OverLoad。隐藏new

    <1> using System; using System.Collections.Generic; using System.Linq; using System.Text; name ...

  4. JSP中的编译指令和动作指令的差别

    JSP中的编译指令和动作指令的差别 1.编译指令是通知Servlet引擎的处理消息.而动作指令仅仅是执行时的脚本动作 2.编译指令是在将JSP编译成Servlet时起作用,而动作指令可替换成JSP脚本 ...

  5. JNI/NDK开发指南(2)

    1.生成动态库.so,存放于手机的system/lib/中(APP怎样将.so存入该文件夹,奇怪?????),Java层调用JNI的类会运行静态代码System.loadLibrary("* ...

  6. Activity动态添加Fragment时遇到的问题

    1.Activity动态调用代码 TitleFragement a = new TitleFragement();        getFragmentManager().beginTransacti ...

  7. 2016/05/17 thinkphp3.2.2 ① Ajax 使用 ②前端验证

    显示效果: ①Ajax使用:   注意传值的所有过程用的是小写,及时数据库列的名称中有大写字母 控制器部分: AjaxController.class.php <?php namespace H ...

  8. high-level operations on files and collections of files

    11.10. shutil — High-level file operations — Python 3.6.5 documentation https://docs.python.org/3/li ...

  9. 两大数相乘 -- javascript 实现

    (function (){ var addLarge = function(n1,n2){ var carry = 0; var ret = ""; n1=n1.toString( ...

  10. 深入理解Java执行时数据区

    前情回想 在本专栏的前12篇博客中. 我们主要大致介绍了什么是JVM, 而且具体介绍了class文件的格式. 对于深入理解Java, 或者深入理解运行于JVM上的其它语言, 深入理解class文件格式 ...