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. 理解DOMSTRING、DOCUMENT、FORMDATA、BLOB、FILE、ARRAYBUFFER数据类型

    一.XMLHttpRequest 2.0的家臣们 我大学那会儿,一个称为Ajax的东西对前端行业造成了深远影响,不仅是JS语言,而包括前端地位.职位兴起以及工作分工等.抛开IE6浏览器不谈,其他浏览器 ...

  2. Python学习笔记14:标准库之信号量(signal包)

    signal包负责在Python程序内部处理信号.典型的操作包含预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等. 要注意,signal包主要是针对UNIX平台(比方Linux, MAC ...

  3. php 数组转xml 数组转json xml转数组 json转数组

    array->xml <?php function array2xml($array, $tag) { function ia2xml($array) { $xml="" ...

  4. javaweb开发之javaBean

    一.JavaBean简介 JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁.JSP搭配JavaBean来使用 ...

  5. call by value reference name

    按名调用 Algol 按值调用 Java https://docs.python.org/3.6/faq/programming.html#how-do-i-write-a-function-with ...

  6. Hibernate ManyToOne Mappings 多对一关联映射

    Hibernate ManyToOne Mappings 多对一关联映射 Hibernate框架的使用步骤: 1.创建Hibernate的配置文件(hibernate.cfg.xml)2.创建持久化类 ...

  7. SAP bseg 使用注意点:1.不要使用;2.有主键再用,

    粗表-簇表 cluster-table BSEGRFBLG 池表 pool-table 我記的沒錯的話,在21天學會ABAP中有一節是專門在講Cluster table,另外在 www.sapfans ...

  8. machine learning for hacker记录(2) 数据分析

    本章主要讲了对数据的一些基本探索,常见的six numbers,方差,均值等 > data.file <- file.path('data', '01_heights_weights_ge ...

  9. Linux随笔-鸟哥Linux基础篇学习总结(全)

    Linux随笔-鸟哥Linux基础篇学习总结(全) 修改Linux系统语系:LANG-en_US,如果我们想让系统默认的语系变成英文的话我们可以修改系统配置文件:/etc/sysconfig/i18n ...

  10. 解决 eclipse出现 Address already in use: bind

    今天开发遇到下面问题,贴出部分异常信息,如下: [WARNING] failed SelectChannelConnector@ java.net.BindException: Address alr ...