首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将根转化为混合基&整根和实数

将根转化为混合基&整根和实数
EN

Code Golf用户
提问于 2014-01-15 06:58:39
回答 4查看 3.7K关注 0票数 7

挑战

这一挑战的目标是采取激进,并将其转化为一个减少的和完整的激进,和一个真正的数字。你不需要把它转换成所有的3,但是,你会得到额外的积分,因为你把它转换成2或3个。如果你的代码不只是平方根工作,你也会得到额外的分数。输入如何工作是您的选择。您不必解析输入,这样就可以将其作为函数使用。如果无法输出根符号( sqrt(x) ),则可以将其输出为cuberoot(x)或√。您也可以使用上标(2√)作为激进分子的索引。

规则

  • 如果您只是输出这3种选项中的一种,那么您就不能在不转换它的情况下输出它(即:如果输入是√125,那么您就不能只输出√125 )。
  • 整个激进分子必须没有效率。
  • 混合根必须有一个系数(如果没有系数,那么它应该是1)。
  • 实数(或根的结果)应该有尽可能多的小数。

示例

下面是125的平方根(√125)的一个示例输出:

代码语言:javascript
复制
Entire radical: √125
Mixed radical: 5√5
Real number: 11.18033988749895

评分

  • 你的分数比你的分数低10%,因为你输出了一个完整的激进的,混合的,或实数的两个。
  • 30%,你的分数输出所有3个(整个激进,混合激进,实数)。
  • 与任何索引的激进分子一起工作,你的分数降低了30%。

获胜者

代码长度最短的人获胜。祝好运!

EN

回答 4

Code Golf用户

回答已采纳

发布于 2014-01-30 21:08:01

APL,77×.7²= 37.7

代码语言:javascript
复制
{(a b)←×⌿(∪p)*[1]c,⍪e-⍺×c←⌊⍺÷⍨e←∪⍦p←π⍵⋄q←⍺/⍨⍺≠2⋄∊¨⍕¨¨⍪(q'√'⍵)(a'×'q'√'b),⍺√⍵}

Nars2000。可以打更多的金牌,比如打印更差的输出,但我太懒了。

而且,漂亮的输出也很漂亮。

Ungolfed

代码语言:javascript
复制
{
  p←π⍵                       ⍝ prime factors of the radical argument ⍵
  u←∪p                       ⍝ unique prime factors
  e←∪⍦u                      ⍝ exponents of those factors (so that ⍵=u*e)
  r←⌊e÷⍺                     ⍝ u's exponents for the reduced radical factor
  f←×/u*r                    ⍝ reduced radical factor
  a←×/u*e-⍺×r                ⍝ reduced radical argument
  i←⍺/⍨⍺≠2                   ⍝ index, unless it's 2 (AH THE DECADENCE, I CAN WASTE SO MUCH)
  o←(i'√'⍵)(f'×'i'√'a),⍺√⍵   ⍝ the three expressions to output
  ∊¨⍕¨¨⍪o                    ⍝ return them as a table without spaces
}

示例

代码语言:javascript
复制
     2 f 125
√125        
5×√5        
11.18033989 
     2 f 1440
√1440       
12×√10      
37.94733192 
     3 f 1440
3√1440      
2×3√180     
11.29243235 
     2 f 987654321
√987654321  
51×√379721  
31426.96805 
票数 2
EN

Code Golf用户

发布于 2014-01-15 09:01:36

C (314)

代码语言:javascript
复制
n,d;main(i){scanf("%d %d",&n,&d);int val[d];for(;pow(i,n)<=d;i++)val[i]=pow(i,n);printf("Entire radical: %drt(%d)\n",n,d);for(i--;i>0;i--)if(d%val[i]==0){printf("Mixed radical: %d*%drt(%d)\n",i,n,d/val[i]);break;}double v,x=1.5,a=d;do{v=(a/pow(x,n-1)-x)/n;x+=v;}while(abs(v)>=1E-9);printf("Real number: %lf\n",x);}

这里是带空格的。

代码语言:javascript
复制
n,d;
main(i){
    scanf("%d %d",&n,&d);
    int val[d];

    for(;pow(i,n)<=d;i++)
        val[i]=pow(i,n);

    printf("Entire Radical: %d*rt(%d)\n",n,d);

    for (i--;i>0;i--)
        if (d%val[i]==0){
            printf("Mixed Radical: %d*%drt(%d)\n", i, n, d/val[i]);
            break;}

    double v,x=1.5,a=d;
    do{
        v=(a/pow(x,n-1)-x)/n;
        x+=v;
    }while(abs(v)>=1E-9);

    printf("Real number: %lf\n", x);
} 

输入:

代码语言:javascript
复制
2 125

输出:

代码语言:javascript
复制
Entire radical: 2rt(125)
Mixed radical: 5*2rt(5)
Real number: 11.180340

输入:

代码语言:javascript
复制
3 125

输出:

代码语言:javascript
复制
Entire radical: 3rt(125)
Mixed radical: 5*3rt(1)
Real number: 5.000000

这并不完美,根计算并不适用于所有输入值,所选的猜测值也不是随机的。它以根目录的全部值作为输入(参见上文)。

票数 2
EN

Code Golf用户

发布于 2014-01-15 16:11:34

C-222×70%×70%≆108.78

代码语言:javascript
复制
p,c=1,i,n=2,t;main(){scanf("%d %d",&i,&p);printf("Entire radical: rt%d(%d)\nReal number: %.16
lf\n",i,p,pow(p,1.0l/i));for(;n++<p;t=0){for(;!(p%n);t++)p/=n;c*=pow(n,t/i);p*=pow(n,t%i);}pr
intf("Mixed root: %drt%d(%d)",c,i,p);}

在四舍五入方面有一些问题,但在其他方面是可以的。

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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