http://acm.hdu.edu.cn/showproblem.php?pid=1098

其实一开始猜测只要验证x=1的时候就行了,但是不知道怎么证明。

题解表示用数学归纳法,假设f(x)成立,证明f(x+1)成立需要什么条件。

代入之后发现有很多二项式系数,导致他们都是65的倍数,剩下的恰好就是 f(x) 和 18+ka 。

那么只需要找到最小的a使得 18+ka是65的倍数。

题解说,毕竟65毕竟小,可以枚举a。因为a+65与a的对65的余数是一样的,所以只要枚举0到64就可以了。

我的想法是用扩展欧几里得求这个的解。

首先由裴蜀定理 ax+by=c 有解,当且仅当gcd(a,b)|c

那么 18+ka=65t 即 -ka+65t=18 求a的最小非负整数解。套方程的模板。

忘记写解方程的返回值导致返回一个任意值,有毒。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; //扩展欧几里得算法:返回 g=gcd(a,b) ,以及对应的等式 ax+by=g 的解
ll exgcd(ll a,ll b,ll &x,ll &y) {
if(!a&&!b)
return -1;
if(!b) {
x=1,y=0;
return a;
}
ll d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;
} bool Liner_qu(ll a, ll b, ll c, ll &x, ll &y) {
if(a==0) {
if(b==0) {
if(c==0) {
x=0;
y=0;
return true;
} else {
return false;
}
}
if(c%b==0) {
x=0;
y=c/b;
return true;
//0x+by=c
} else
return false;
}
if(b==0) {
if(c%a==0) {
x=c/a;
y=0;
return true;
//ax+0y=c
} else {
return false;
}
}
ll g=__gcd(a,b);
if(c%g){
return false;
}
//裴蜀定理 ll k=c/g;
exgcd(a,b,x,y);
//ax+by=g的解
x *= k; // 任意一解
y *= k; ll tx = x; x %= b; //最小解
if(x<0)
x += abs(b); //最小非负整数解
k=(tx-x)/b;
y += k*a; //对应的y的解
return true;
} ll F(int k) {
int a;
{
if(k%5==0||k%13==0)
return -1;
else {
a=1;
while((k*a+18)%65!=0) {
a++;
}
return a;
}
}
} ll G(int k) {
ll a,b,c,x,y;
a=-k;
b=65;
c=18; bool flag=Liner_qu(a,b,c,x,y); if(flag) {
return x;
} else {
return -1;
}
} int main() {
int k;
while(cin>>k) {
ll a,b,c,x,y;
a=-k;
b=65;
c=18; bool flag=Liner_qu(a,b,c,x,y); if(flag){
cout<<x<<endl;
}
else{
cout<<"no"<<endl;
}
} /*for(int k=1; k<=10000; k++) {
ll s1=F(k);
ll s2=G(k);
if(s1!=s2) {
cout<<"k="<<k<<endl;
cout<<s1<<endl<<s2<<endl;
}
}*/
}

HDU - 1098 - Ignatius's puzzle - ax+by=c的更多相关文章

  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(数学归纳)

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

  4. 题解报告:hdu 1098 Ignatius's puzzle

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1098 题目中文是这样的: 伊格内修斯在数学上很差,他遇到了一个难题,所以他别无选择,只能上诉埃迪. 这 ...

  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. HDOJ 1098 Ignatius's puzzle

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

  7. hdu 1098 Ignatius's puzz

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

  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. 通过Pojo对象 field 属性加注解实现格式校验,极大的降低代码量

    近期做一个接口.接受外系统的报文,通过XStream转换成java对象以后.须要对当中的字段做格式校验. 要求例如以下: 传统的方式是硬编码校验.可是对于field非常多的情况.代码量暴增.easy出 ...

  2. 第 1 章 第 2 题 空间敏感排序问题 位向量实现( bitset位向量 )

    问题分析 在上篇文章中,给出了使用C语言中经典位运算符来实现位向量的方法.而本文,将介绍使用C++中的bitset容器来实现位向量的方法. 实现 // 请包含bitset头文件 #include &l ...

  3. MVC5中使用jQuery Post 二维数组和一维数组到Action

    很久没有写了,最近在做一个MVC项目,这是我做的第一个MVC项目.之前可以说多MVC一点都不了解,今天把昨天遇到的一个问题记录下来.MVC大神就请飘过吧,跟我遇到同样问题的可以进来看看.遇到的第一个问 ...

  4. LeetCode(82)题解: Remove Duplicates from Sorted List II

    https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/ 题目: Given a sorted linked list, ...

  5. 使用jquery datatables插件遇到fnReloadAjax的问题

    1 官网地址:http://www.datatables.net/ 2 基本参数介绍 http://blog.csdn.net/mickey_miki/article/details/8240477 ...

  6. 挂断电话demo

    <!-- 结束通话和打电话的权限 --> <uses-permission android:name="android.permission.CALL_PHONE" ...

  7. Block和inline元素对比

    所有的HTML元素都属于block和inline之一.block元素的特点是:总是在新行上开始:高度,行高以及顶和底边距都可控制:宽度缺省是它的容器的100%,除非设定一个宽度<div>, ...

  8. 关于VLOOKUP函数的用法

    “Lookup”的汉语意思是“查找”,在Excel中与“Lookup”相关的函数有三个:VLOOKUP.HLOOKUO和LOOKUP.下面介绍VLOOKUP函数的用法. 一.功能 在表格的首列查找指定 ...

  9. C#开发遇到的常见问题及知识点

    今天遇到的类型初始值设定项引发异常的原因是:类没有添加[Serializable]属性. this.DialogResult = System.Windows.Forms.DialogResult.O ...

  10. 矩阵管理——和visitor模式没有本质区别,都是为了避免资源重复

    矩阵管理中的员工是双线汇报的模式.其上司有两个,一个是流程上司,一个是专业上司.流程上司负责你的日常考核,专业上司负责你的晋升和任免. 管理条件 相对于矩阵管理的矩阵式组织,适合于某些较为庞大的全球性 ...