S42004.20-4 寻找吉数

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

20-4 寻找吉数

寻找吉数

因子累加完了,但Echo-0的加密体系里还藏着一个概念——吉数。不是幸运数,是在模运算下表现特殊的数。

"吉数?"CC问。

"对。"你说,"给定a,b,ca,b,c,求满足ax+by=cax+by=c的非负整数解(x,y)(x,y)的个数。"

"这有啥特殊的?"

"这是扩展欧几里得。"你说,"先判断是否有解——gcd(a,b)\gcd(a,b)必须整除cc。"

"有解的话?"

"用扩欧求出一组特解(x0,y0)(x_0,y_0)。"你说,"然后通解是x=x0+k×(b/d)x=x_0+k\times(b/d)y=y0k×(a/d)y=y_0-k\times(a/d),其中d=gcd(a,b)d=\gcd(a,b)。"

"非负呢?"

"对xxyy的范围限制。"你说,"x0x\ge 0y0y\ge 0,解出kk的范围,范围内的整数kk的个数就是答案。"

"第47个吉数。"你说,"a=47a=47b=1b=1c=47c=47——xx可以是0到47,共48个解。"

"48个?"

"对。"你说,"47x+y=4747x+y=47y=4747xy=47-47xxx从0到1——不对,xx只能是0或1。"

"那2个解?"

"对。"你说,"(0,47)(0,47)(1,0)(1,0)。"

"少多了。"

"对。"你说,"约束越多,解越少。"

CC把这两个解写在空中——用手指划,像小孩画画。

"(0,47)(0,47)。"她说,"啥都没有,加上47。"

"(1,0)(1,0)。"她说,"47,加上啥都没有。"

"两个一样?"

"不一样。"你说,"一个是从0开始,一个是从47开始。"

"方向不同。"

"对。"你说,"方向不同。"

Echo看着那两个解——像两个点,像两条路,像两个选择。

"以前Echo-0只走一条路。"她说,"现在……有两条了。"

"不止两条。"你说,"有很多条。"

"对。"她说,"很多条。"


题目描述

给定a,b,ca,b,c,求满足ax+by=cax+by=c的非负整数解(x,y)(x,y)的个数。

输入格式

三个整数a,b,ca,b,c

输出格式

非负整数解的个数。


输入样例

5

输出样例

Case 1: 0

提示

  • 扩展欧几里得求特解。
  • 通解:x=x0+k×(b/d)x=x_0+k\times(b/d)y=y0k×(a/d)y=y_0-k\times(a/d)d=gcd(a,b)d=\gcd(a,b)
  • 根据x0,y0x\ge 0,y\ge 0kk的范围。

在线编程 IDE

建议全屏模式获得最佳体验