博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2115 C Looooops(扩展欧几里得应用)
阅读量:5806 次
发布时间:2019-06-18

本文共 803 字,大约阅读时间需要 2 分钟。

题目地址:

水题。

公式非常好推。最直接的公式就是a+n*c==b+m*2^k.然后能够变形为模线性方程的样子,就是

n*c+m*2^k==b-a.即求n*c==(b-a)mod(2^k)的最小解。(真搞不懂为什么训练的时候好多人把青蛙的约会都给做出来了,这题却一直做不出来。。

这两道不都是推公式然后变形吗。

。。。。

代码例如以下:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define LL __int64LL X, Y;LL exgcd(LL a,LL b){ if(b==0) { X=1; Y=0; return a; } LL r=exgcd(b,a%b); LL t=X; X=Y; Y=t-a/b*Y; return r;}int main(){ LL a, b, c, k, d, L, z; while(scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&k)!=EOF&&k) { z=pow(2,k); d=exgcd(c,z); L=b-a; if(L%d) { printf("FOREVER\n"); continue ; } else { LL ans=X*L/d; LL s=z/d; if(ans<0) { ans=ans%s+s; } else { ans=ans%s; } printf("%I64d\n",ans); } } return 0;}

转载地址:http://srkbx.baihongyu.com/

你可能感兴趣的文章
有关GitHub仓库分支的几个问题
查看>>
无服务器计算的黑暗面:程序移植没那么容易
查看>>
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>
Webpack入门教程三十
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Kali linux virtualbox rc=1908 错误解决办法
查看>>
Erlang学习总结之Erlang语法中的逗号(,)、分号(;),句号(.)的正确用法...
查看>>
linux软件包管理之三(源代码安装)
查看>>
数据库三范式是什么?
查看>>
[转载]设置Ubuntu自动连接无线,无须再输入密钥环和无线密码
查看>>
九叔Xen App测试报告
查看>>
Apache配置
查看>>
Ext gridPanel 单元格数据的渲染
查看>>
Android SDK 的下载代理
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
LNMP一键安装
查看>>
SQL Server数据库概述
查看>>