这一挑战的目标是采取激进,并将其转化为一个减少的和完整的激进,和一个真正的数字。你不需要把它转换成所有的3,但是,你会得到额外的积分,因为你把它转换成2或3个。如果你的代码不只是平方根工作,你也会得到额外的分数。输入如何工作是您的选择。您不必解析输入,这样就可以将其作为函数使用。如果无法输出根符号( sqrt(x) ),则可以将其输出为cuberoot(x)或√。您也可以使用上标(2√)作为激进分子的索引。
√125,那么您就不能只输出√125 )。1)。下面是125的平方根(√125)的一个示例输出:
Entire radical: √125
Mixed radical: 5√5
Real number: 11.18033988749895代码长度最短的人获胜。祝好运!
发布于 2014-01-30 21:08:01
{(a b)←×⌿(∪p)*[1]c,⍪e-⍺×c←⌊⍺÷⍨e←∪⍦p←π⍵⋄q←⍺/⍨⍺≠2⋄∊¨⍕¨¨⍪(q'√'⍵)(a'×'q'√'b),⍺√⍵}Nars2000。可以打更多的金牌,比如打印更差的输出,但我太懒了。
而且,漂亮的输出也很漂亮。
{
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
} 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 发布于 2014-01-15 09:01:36
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);}这里是带空格的。
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);
} 输入:
2 125输出:
Entire radical: 2rt(125)
Mixed radical: 5*2rt(5)
Real number: 11.180340输入:
3 125输出:
Entire radical: 3rt(125)
Mixed radical: 5*3rt(1)
Real number: 5.000000这并不完美,根计算并不适用于所有输入值,所选的猜测值也不是随机的。它以根目录的全部值作为输入(参见上文)。
发布于 2014-01-15 16:11:34
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);}在四舍五入方面有一些问题,但在其他方面是可以的。
https://codegolf.stackexchange.com/questions/18535
复制相似问题