传送门

这道题是求解不定方程的一道好练习题。

题目描述的很诡异……还说什么k进制,其实就是要求一个数A,每次加C,问到B要加多少次,所有的数对2k取模。

也就是说我们能列出如下方程:A+xC ≡ B (mod 2k
我们把这个方程两边移项转化,那么就能得到一个不定方程的形式。

老套路,判断有没有解,否则用exgcd求解。

本题有小坑,你在1<<32的时候,即使变量开了longlong也不行,必须写成1ll的形式,否则会WA。

看一下代码。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#include<set>
#include<vector>
#include<queue>
#define pb push_back
#define rep(i,a,n) for(int i = a;i <= n;i++)
#define per(i,n,a) for(int i = n;i >= a;i--)
#define enter putchar('\n') using namespace std;
typedef long long ll;
const int M = ;
const int N = ;
const int INF = ;
const ll mod = ; ll read()
{
ll ans = ,op = ;
char ch = getchar();
while(ch < '' || ch > '')
{
if(ch == '-') op = -;
ch = getchar();
}
while(ch >= '' && ch <= '')
{
ans *= ;
ans += ch - '';
ch = getchar();
}
return ans * op;
} ll a,b,c,k,x,y,p,q,s; ll gcd(ll a,ll b)
{
return (!b) ? a : gcd(b,a%b);
} ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b)
{
x = ,y = ;
return a;
}
ll d = exgcd(b,a%b,y,x);
y -= a/b * x;
return d;
} int main()
{
while()
{
a = read(),b = read(),c = read(),k = read();
if(!a && !b && !c && !k) break;
p = c,q = 1LL << k,s = (b-a+q) % q;
ll G = gcd(p,q);
if(s % G)
{
printf("FOREVER\n");
continue;
}
p /= G,q /= G,s /= G;
exgcd(p,q,x,y);
x = (x + q) % q,x *= s,x %= q;
printf("%lld\n",x);
}
return ;
}

最新文章

  1. EntityFramework 事务处理
  2. 用Fmx调用Bass.dll
  3. 【STL】优先队列priority_queue详解+OpenJudge-4980拯救行动
  4. 关于onmouseover和onmouseout的bug
  5. Linux机器24项安全合规设置
  6. BZOJ2164 : 采矿
  7. Android照片墙应用实现,再多的图片也不怕崩溃
  8. Android 学习笔记之AndBase框架学习(二) 使用封装好的进度框,Toast框,弹出框,确认框...
  9. 在Android设备上判断设备是否支持摄像头
  10. SlickGrid example 3b: 支持撤销操作的编辑单元
  11. nginx配置说明
  12. ANDROID_MARS学习笔记_S03_007_GoogleMap1
  13. linkedlist,arraylist,vector的特点
  14. 一次 HTTP 请求响应过程的完整解析
  15. Oracle工具——ADRCI
  16. MybatisMapper 映射框架(增删改查 原始模式)
  17. 12.27 cf div3 解题报告
  18. 用Jenkins自动化搭建测试环境-前奏
  19. C语言、编程语言发展史
  20. CAAnimation临时取消动画,永久取消动画

热门文章

  1. 竞赛Noi_Linux使用总结(vim)
  2. Leetcode 152.乘机最大子序列
  3. JavaEE JDBC 了解JNDI
  4. [K/3Cloud] 如何设置设置单据分录中的整列的精度
  5. hosts.allow和hosts.deny文件
  6. JavaWeb图片显示与存储
  7. BootStrap3栅格系统与布局
  8. P1996||T1282 约瑟夫问题 洛谷||codevs
  9. Flink本地安装和创建Flink应用
  10. JSP的安全性