首页 > 代码库 > poj 2115
poj 2115
注意2^32用long long其他没坑,扩展欧几里得,,,反正我没想到
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; typedef long long ll; ll aa,bb,cc,k; void hh(ll a,ll b,ll &d,ll &x,ll &y) { if(!b) { x=1;y=0;d=a; } else { hh(b,a%b,d,y,x); y-=x*(a/b); } } int main() { while(~scanf("%lld%lld%lld%lld",&aa,&bb,&cc,&k)&&(aa||bb||cc||k)) { ll c=bb-aa; ll a=cc; ll b=(ll)1<<k;//注意折了ll的转化 ll d,x,y; hh(a,b,d,x,y); if(c%d) printf("FOREVER\n"); else { c=c/d; b=b/d; printf("%lld\n",(x%b*c%b+b)%b); } } return 0; }
poj 2115
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。