首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动力模组高尔夫。

动力模组高尔夫。
EN

Code Golf用户
提问于 2011-02-11 21:23:58
回答 8查看 292关注 0票数 5

编写一个函数f(a,b,c),在10秒钟内计算a^b (mod c)。

  • a,b< 10^100
  • C< 10000。

例子:

代码语言:javascript
复制
f(10^50, 10^50, 54123) = 46555
f(5^99, 10^99, 777) = 1
EN

回答 8

Code Golf用户

回答已采纳

发布于 2011-02-11 22:39:41

dc 1或5 chars

在GNU中,有一个操作符|,它就是这样做的。引用自手册:

|弹出三个值并计算一个模幂。弹出的第一个值用作缩减模数;这个值必须是一个非零数,并且应该是一个整数。第二个弹出式作为指数;这个值必须是一个非负数,并且这个指数的任何分数部分都将被忽略。弹出的第三个值是得到指数的基,它应该是一个整数。对于小整数,这类似于序列Sm ^ Lm%,但与^不同,此命令将适用于任意大的指数。

您可以将它指定为“函数”如下:

代码语言:javascript
复制
[|]sf

(也有5个字符.)这将|分配给f。你可以把它叫做lfx

票数 3
EN

Code Golf用户

发布于 2011-02-11 22:27:17

Python-5 chars

代码语言:javascript
复制
f=pow

测试

代码语言:javascript
复制
>>> f(10**50, 10**50, 54123)
46555L
>>> f(5**99, 10**99, 777)
1L
票数 2
EN

Code Golf用户

发布于 2011-02-11 23:38:02

Haskell,65岁,

冒昧地只在二进制b的设置位上取模数,但给定范围限制,这不是问题。

代码语言:javascript
复制
f a b c|b==0=1|odd b=mod(a*f a(b-1)c)c|0<1=f(mod(a^2)c)(div b 2)c
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档