Chữ số khác không cuối cùng của n!


22

Cho một số nguyên 1 ≤ N 1.000.000 làm đầu vào, xuất ra chữ số khác không cuối cùng của N! , ở đâu ! là giai thừa (tích của tất cả các số từ 1 đến N , đã bao gồm). Đây là trình tự OEIS A008904 .

Chương trình của bạn cần kết thúc trong vòng 10 giây trên một máy hợp lý cho bất kỳ đầu vào hợp lệ nào.

Các trường hợp thử nghiệm

1 => 1
2 => 2
3 => 6
4 => 4
5 => 2
6 => 2
7 => 4
8 => 2
9 => 8
10 => 8
100 => 4
1000 => 2
10000 => 8
100000 => 6
1000000 => 4

Đây là một để mã ngắn nhất tính bằng byte sẽ thắng!


Chức năng đơn hay hoàn thành chương trình?
Joey

@joey Không, họ chỉ là trường hợp thử nghiệm. Đầu vào đơn, Đầu ra đơn.
fR0DDY

@joey Hoàn thành chương trình.
fR0DDY

1
Yêu cầu cho một chương trình đầy đủ không được khuyến khích ...
Erik the Outgolfer 18/1/18

2
@EriktheOutgolfer đây là từ ~ 7 năm trước, vì vậy tôi không nghĩ rằng điều đó đã được xác định vào thời điểm đó
NoOneIsHere 18/1/18

Câu trả lời:


8

Ruby - 63 ký tự

f=->n{n<2?1:6*[1,1,2,6,4,4,4,8,4,6][n%10]*3**(n/5%4)*f[n/5]%10}

Nguồn - http://oeis.org/A008904

Xử lý f lên đến một ngàn chữ số trong một giây.

Kiểm tra

irb(main):014:0> for n in 2..6
irb(main):015:1> puts f[10**n]
irb(main):016:1> end
4
2
8
6
4

11

Toán học, 45 36 byte

Last@Select[IntegerDigits[#!],#>0&]&

Rất dễ đọc cho một câu trả lời chiến thắng. :) (Sau đó, một lần nữa, không có đệ trình GolfScript & Co. nào.)

Điều này xử lý đầu vào 1.000.000 trong khoảng 5 giây trên máy của tôi.


1
Mathematica là ngôn ngữ hoàn hảo cho câu hỏi này.
Michael Stern

4

Con trăn - 75

n=input()
g=1
while n:
 g*=n
 while g%10<1:g/=10
 g%=10**9
 n-=1
print g%10

3

PARI / GP - 27 byte

Giao dịch này có tốc độ cho kích thước - testcase mất nhiều thời gian (~ 6 giây).

n->n!/10^valuation(n!,5)%10

Phiên bản này nhanh hơn nhiều (~ 15 micro giây) nhưng mất 81 byte:

n->r=1;while(n,r*=Mod(4,10)^(n\10%2)*[1,2,6,4,2,2,4,2,8][max(n%10,1)];n\=5);lift(r)

Bạn có thể sử dụng mã (không chơi gôn) này để kiểm tra:

[%(10^n) | n <- [1..6]]

2

Windows PowerShell, 53 56 59 60 63 73 90

($a=1).."$input"|%{$a="$($a*$_)".trim('0')%1e7}
$a%10

Ghi chú:

  • Mất nhiều hơn một phút cho một số gần 100.000. Tuy nhiên, việc xóa các số 0 ở cuối yêu cầu chuyển đổi thành chuỗi, thực hiện các phép tính đòi hỏi một số, vì vậy việc chuyển đổi là không thể tránh khỏi trong mọi trường hợp.

Lịch sử:

  • 2011/02/08 10:31 (90) - Nỗ lực đầu tiên.
  • 2011/02/08 10:33 (73) - Modulus ngắn hơn cắt và tham gia.
  • 2011/02/08 10:34 (63) - Cắt không cần thiết.
  • 2011/02/08 10:37 (60) - Đúc không cần thiết cho một số. Modulus làm điều đó tốt, đã.
  • 2011/02/08 10:40 (59) - Một số nội tuyến.
  • 2011/02/08 11:00 (56) - Tôi đã nói gì trước đây về mô đun ngắn hơn? Áp dụng cho đầu ra là tốt.
  • 2011/02/08 11:01 (53) - Đúc $inputthành chuỗi là đủ; các diễn viên intđược áp dụng ngầm.

2

Perl, 53 58 61 nhân vật

Tất cả các khoảng trắng có thể được loại bỏ, nhưng tôi để nó lại cho "khả năng đọc". Lưu ý: không sử dụng một số công thức rõ ràng ngớ ngẩn từ Sloane.

sub f {
    $_ = $1 * ++$n || 1, /(.{1,7}?)0*$/ while $n < $_[0];
    $1 % 10
}

Tính f (10 ^ 6) trong 8,7 giây trên máy của tôi.

Cập nhật : OP muốn nó là toàn bộ chương trình:

$_ = $1 * ++$n || 1, /(.{1,7}?)0*$/ while $n < $ARGV[0];
print $1 % 10

Điều đó làm cho nó 55 ký tự.


2

CJam - 28

1ri{I)*_AbW%{}#A\#/1e7%}fIA%

Bạn có thể dùng thử tại http://cjam.aditsu.net/ cho các giá trị lên tới 10000 hoặc hơn; Đối với số lượng lớn hơn, bạn nên sử dụng trình thông dịch java . 1000000 chạy trong khoảng 3 giây trên máy tính xách tay của tôi.

Giải trình:

Thật không may, giải pháp đơn giản là quá chậm, vì vậy tôi chỉ giữ 7 chữ số cuối (trước các số 0 ở cuối) sau mỗi phép nhân.

1           push 1 on the stack
ri          read a token and convert to integer
{           loop (for I from 0 to N - 1)
    I)      push I and increment
    *       multiply with the previous value (initially 1)
    _Ab     duplicate and convert to array of digits
    W%      reverse array
    {}#     find the position of the first non-zero digit
    A\#     raise 10 to that power
    /       divide, thus removing all trailing zeros
    1e7%    keep the remainder modulo 10000000
}fI         end for loop
A%          get the last digit

Lưu ý: ngôn ngữ này mới hơn rất nhiều so với câu hỏi.



2

05AB1E , 4 byte

!0м¤

Hãy thử trực tuyến!

Giải trình

!0    # Push the factorial of the input and 0
  м   # Remove the occurences of 0 in the factorial
   ¤  # Push the last element, implicit display

1
Phiên bản TIO đã hết thời gian (60 giây) trong trường hợp thử nghiệm cuối cùng - làm thế nào bạn có được nó trong vòng 10 giây trên một "máy hợp lý"?
Toby Speight

2

Thạch , 4 byte

!Ṛȯ/

Hãy thử trực tuyến!

Giải trình

Sử dụng thực tế là khi (đảo ngược một danh sách; không vector hóa) được áp dụng cho một số nguyên, nó sẽ tự động lấy D(chữ số) trước.

Với đầu vào 8:

!Ṛȯ/
!     Factorial: 8! = 40320
 Ṛ    Reverse: [0,2,3,0,4]
   /  Reduce by...
  ȯ   ...logical OR: ((((0ȯ2)ȯ3)ȯ0)ȯ4) = first truthy element = 2

Tôi không nghĩ có một "phần tử trung thực đầu tiên" một byte ( ȯ/hoạt động như) nhưng nếu có thì điều này có thể rút ngắn thành tổng cộng ba byte.


2

Java (OpenJDK 8) , 62 byte

n->{long f=n;for(;n>1||f%10==0;)f=n>1?f*--n:f/10;return f%10;}

Hãy thử trực tuyến!

Tương tự như @Kevin Cruijssen nhưng tiết kiệm 5 byte bằng cách kết hợp các vòng lặp.


Chào mừng đến với PPCG! Bài đăng đầu tiên rất hay! Hy vọng bạn dính xung quanh!
Rɪᴋᴇʀ

Chào mừng đến với PPCG! Tôi đồng ý với @Riker, bài đăng đầu tiên tuyệt vời. Hoàn thành tốt việc chơi mã của tôi bằng cách kết hợp các vòng lặp. Bạn có thể chơi thêm 1 byte trong câu trả lời hiện tại của mình bằng cách thay thế ||bằng |và một byte bổ sung bằng cách thay thế ==0bằng <1. Tận hưởng kì nghỉ của bạn!
Kevin Cruijssen

2

C, 150 140 135 byte

r,d;f(k,x){r=x<5?3:f(k+1,x/5);return(d=x%5)?r*"33436"[d]*(1<<d*k%4)%5:r;}main(int c,char**v){c=atoi(*++v);printf("%d",c<2?1:2*f(0,c));}

Đây là phiên bản cho các hệ thống ASCII; thay thế chuỗi 33436bằng 11214cho một hệ thống EBCDIC hoặc bằng \1\1\2\1\4một chương trình di động.

Các giải pháp C hơi bị cản trở bởi yêu cầu cung cấp một chương trình đầy đủ; tuy nhiên, điều này không trả lời đầy đủ câu hỏi.

Dùng thử trực tuyến (yêu cầu Javascript):

Giải trình

Nó dựa trên thuật toán được nêu trong Số ít nhất không chữ số của n! , quay lại để chúng tôi tái diễn để tìm ra sức mạnh cao nhất trong năm và thực hiện phép tính trên đường ra. Các bảng hằng số quá lớn, vì vậy tôi đã giảm chúng bằng cách tìm mối quan hệ giữa phần dư trước đó r, chữ số hiện tại dvà độ sâu đệ quy k:

     0    1       2       3    4  =d
  0  0  3×2^k  1×2^2k  3×2^3k  2
  1  1  1×2^k  2×2^2k  1×2^3k  4
r 2  2  2×2^k  4×2^2k  2×2^3k  3
  3  3  3×2^k  3×2^2k  3×2^3k  2
  4  4  4×2^k  4×2^2k  4×2^3k  1

Đối với r>0, điều này giải quyết đến một lần không đổi rlần 2^dk(mod 5); các hằng số nằm ở a[]bên dưới (được đánh dấu trong mã đánh gôn). Chúng tôi cũng quan sát đó (2^4)%5là 1, vì vậy chúng tôi có thể giảm số mũ để tránh tràn phạm vi int.

const int a[] = { 1, 1, 2, 1, 4 };
int f(int k, int x){
    int r = x<5 ? 3 : f(k+1,x/5); /* residue - from recursing to higher-order quinary digits */
    int d = x%5;
    if (!d)
        return r;
    return r * a[d] * (1<<d*k%4) % 5;
}

int main(int c, char **v)
{
    c = atoi(*++v);
    printf("%d",
           c<2
           ? 1                  /* special-case 0 & 1 */
           : 2*f(0,c));         /* otherwise, it's 2 times r */
}

Các xét nghiệm:

$ for i in 100 1000 10000 100000; do echo $i: `./694 $i`; done
100: 4
1000: 2
10000: 8
100000: 6
1000000: 4

Hiệu suất là đáng kính, quá. Đây là một đầu vào tối đa cho một hệ thống có 32 bit int:

$ time ./694 2147483647
8
real    0m0.001s
user    0m0.000s
sys     0m0.000s

Tôi cũng có cùng thời gian với 64 bit tối đa int.


1
Nó có thể được quan tâm để lưu ý rằng 2147483647!có hơn 19 tỷ chữ số và (2^63-1)!hơn 170.000.000.000.000.000.000 chữ số, vì vậy đây là một chiến thắng lớn trong việc tính toán các yếu tố. 1000000!như được chỉ định trong câu hỏi là khả thi để tính toán trên phần cứng hiện tại; đó chỉ là 5 triệu chữ số. :-)
Toby Speight

1

PHP - 105

 <?foreach(explode("\n",`cat`)as$n)if($n){$f=rtrim(gmp_strval(gmp_fact($n)),'0');echo substr($f,-1)."\n";}

Chạy dưới 10 giây với testcase đã cho.


1

Python3

Chars

Có thể thực hiện 10000 trong ~ 3,2 giây (Ideone cắt tôi sau 8 giây, tôi chắc chắn rằng nó sẽ mất nhiều hơn 10 giây mặc dù :()

from functools import *
N=100
r=range
s=(p for p in r(2,N)if all(p%n>0for n in r(2,p)))
f=lambda n,x:n//x+(n//x>0and f(n//x,x)or 0)
e=list([p,f(N,p)]for p in s)
e[0][1]-=e[2][1]
e[2][1]=0
print(reduce(lambda x,y:x*y,map(lambda x:x[0]**x[1],e))%10)

Python2.6

299 Chars (nhanh hơn một chút)

from itertools import *
N=100000
r=xrange
def s(c=count(2)):
        while 1:p=c.next();c=ifilter(p.__rmod__,c);yield p
f=lambda n,x:n//x+(n//x>0and f(n//x,x)or 0)
e=[[p,f(N,p)]for p in takewhile(lambda x:x<N,s())]
e[0][1]-=e[2][1]
e[2][1]=0
print(reduce(lambda x,y:x*y,map(lambda x:pow(x[0],x[1],10),e))%10)

1

Haskell, 78 ký tự

f n=head$dropWhile(=='0')$reverse$show$product[1..n]
main=interact(show.f.read)

(Có lẽ sẽ cần phải được biên dịch để tính 1.000.000! Trong 10 giây).


Lưu hai ký tự, thay thế foldl1bằng product(cf codegolf.stackexchange.com/questions/607/find-the-factorial/ trộm ). Nhưng bạn đã thực sự thử với 1000000! ?
JB

PS: không phải là một chương trình hoàn chỉnh.
JB

Xin lỗi, đã làm điều đó trước khi được làm rõ trong các ý kiến. Tôi sẽ cập nhật nó.
stusmith

1

J - 42 40 ký tự

Cả một chương trình. Lưu chương trình này trong một tập tin và chạy với jconsole script.ijs 1234. Lưu ý rằng chương trình này không thoát khỏi trình thông dịch sau khi in kết quả. Nhập ^Dhoặc exit]0để thoát trình thông dịch.

echo([:{:@(#~*)10&#.inv@*)/1+i.".>{:ARGV

Đây là một lời giải thích:

  • x #. ygiải thích vectơ số nguyên yxsố cơ sở ; ví dụ, 10 #. 1 2 3 4sản lượng 1234.
  • u invmang lại nghịch đảo của một động từ u. Cụ thể, x #. inv yđại diện ynhư một xsố cơ sở ; ví dụ, 10 #. 1234sản lượng 1 2 3 4. Lưu ý rằng invđược định nghĩa là ^:_1, nghĩa là, uáp dụng -1 thời gian.
  • x * ysản phẩm của xy, do đó x 10&#.inv@* ymang lại đại diện cơ sở 10 cho sản phẩm của xy.
  • x # ysao chép mục thứ ny thường xuyên như mục thứ n của x; khi xlà một vectơ của booleans, xchọn những mục ycần lấy. Ví dụ, 1 0 1 0 # 1 2 3 4sản lượng 1 3.
  • * ymang lại dấu hiệu của y.
  • x u~ yphản xạ của u, nghĩa là giống như y u x.
  • Do đó, y #~ * ymang lại một vectơ của tất cả các mục yđó là tích cực. Trong ký hiệu ngầm, điều này có thể được viết bằng một cái móc như (#~ *).
  • {: ymang lại mục cuối cùng trong y.
  • lắp ráp với nhau, chúng ta có được cụm từ ngầm ([:{:@(#~*)10&#.inv@*).
  • u/ ygiảm của y, đó là, động từ cặp đôi uchèn giữa các yếu tố của y. Ví dụ, +/1 2 3 4là như 1 + 2 + 3 + 4và năng suất 10.
  • Vì vậy, cụm từ ([:{:@(#~*)10&#.inv@*)/ ymang lại chữ số cuối cùng của sản phẩm của các mặt hàng của y.
  • ARGV là một vectơ đóng hộp của các đối số dòng lệnh.
  • ".>{:ARGV là đối số cuối cùng được bỏ hộp và được hiểu là một số.
  • i. ytính các số tự nhiên từ 0đến y - 1.
  • Do đó, 1+i. ymang lại số tự nhiên từ 1đến y. Tôi cũng có thể đã sử dụng >: gia tăng ở đây, nhưng 1+rõ ràng hơn với cùng chi phí cho các ký tự.
  • Toàn bộ chương trình chỉ áp dụng 1+i.".>{:ARGV(vectơ của 1số trong đối số dòng lệnh cuối cùng) cho động từ ([:{:@(#~*)10&#.inv@*)/và in kết quả với echo.


1

R , 63 55 51 46 byte

Tính giai thừa, trích xuất chữ số khác không cuối cùng. Cảm ơn Giuseppe đã cung cấp cấu trúc cơ bản.

(y=(gamma(scan()+1))%/%10^(0:1e5)%%10)[!!y][1]

Hãy thử trực tuyến!

Ngoài ra, câu trả lời 51 byte cũ của tôi:

Tính giai thừa, chuyển đổi thành ký tự, loại bỏ tất cả 0s và sau đó lấy ký tự cuối cùng. Đã lưu 2 byte nhờ Giuseppe.

substring(x<-gsub("0","",gamma(scan())+1),nchar(x))

Hãy thử trực tuyến!


1
gamma(x+1)ngắn hơnfactorial(x)
Giuseppe

không có chuyển đổi chuỗi, tốt nhất tôi quản lý để có được là (y=(x<-gamma(scan()+1))%/%10^(0:nchar(x))%%10)[!!y][1]54 byte.
Giuseppe

@Giuseppe Chúng tôi có thể thay thế nchar(x)bằng 1e5giải pháp 46 byte! Làm tốt lắm.
rturnbull


1

Perl 6 ,  26  35 byte

{[*](1..$_)~~/.*<(<-[0]>/}

Thử nó


Là một chương trình đầy đủ:

put [*](1..@*ARGS[0])~~/.*<(<-[0]>/

Thử nó

Mở rộng:

{
  [*]( 1..$_ ) # reduce using &infix:« * »
  ~~           # match with
  /
    .*         # any number of values (so it matches from the end)
    <(         # only capture the following
    <-[0]>     # any value but 0 (negated character class)
  /
}

1

C (gcc) , 72 byte (hàm)

f(n,d)long long n,d;{for(d=1;n;d%=10000)for(d*=n--;d%10<1;d/=10);d%=10;}

Hãy thử trực tuyến!

C (gcc) , 101 99 byte (toàn bộ chương trình)

main(){long long n,d=1;for(scanf("%lld",&n);n;d%=10000)for(d*=n--;d%10<1;d/=10);printf("%d",d%10);}

Hãy thử trực tuyến!

Câu hỏi này chỉ mới 8 tuổi nên "máy hợp lý" không giống như hồi trước, nhưng tôi nhận được thời gian ~ 0,01 giây trên máy tính của mình khi thực hiện tất cả các trường hợp thử nghiệm, vì vậy trừ khi máy tính tăng tốc với hệ số 1000 trong thập kỷ vừa qua, nó sẽ ổn thôi.


Định luật Moore vẫn còn (loại) giữ vững, vì vậy nó sẽ nhanh hơn khoảng x16 lần
ASCII

Ngoài ra, một chức năng là tốt
ASCII


0

Tùy viên , 26 byte

Last@`\&:(All@V)@Digits@`!

Hãy thử trực tuyến!

Giải trình

Last@`\&:(All@V)@Digits@`!

Đây là một thành phần của 4 chức năng:

  • `! - đây là phiên bản chức năng của toán tử giai thừa
  • Digits - cái này lấy các chữ số của giai thừa
  • \&:(All@V)- Đây là chức năng lựa chọn. Nó hoạt động bằng cách liên kết trái ( &:) hàm All@Vvới \, được chọn. Đổi lại, All@Vlà một cách kiểm tra ngắn nếu một số không bằng 0. Nó hoạt động bằng cách chuyển đầu vào của nó thành một vectơ0 -> [0] sau đó truy vấn nếu tất cả các thành viên đó là trung thực (tức là không phải 0). Điều này cho các chữ số của số không có 0.
  • Last - điều này chỉ đơn giản là có được thành viên cuối cùng của mảng này.

Điều này có vẻ rất chậm - TIO đã hết thời gian (1 phút) trong trường hợp thử nghiệm 100000 - làm thế nào bạn có được kết quả 1000000 trong vòng 10 giây?
Toby Speight

@TobySpeight Khi tôi trả lời thử thách này, yêu cầu cụ thể đó không có (kiểm tra lịch sử sửa đổi).
Conor O'Brien

Ah, tôi nên nhìn vào lịch sử! Bạn đã xác minh tất cả các testcase trong câu hỏi, mặc dù?
Toby Speight

Dường như có một loạt các câu trả lời trong khoảng thời gian mà giới hạn thời gian đã được loại bỏ khỏi câu hỏi - thật không may, thực sự.
Toby Speight

@TobySpeight Vâng, tôi đã làm. Thật không may, và tôi không chắc về chính sách liên quan đến việc này.
Conor O'Brien

0

APL (Dyalog Unicode) , 18 15 byte

{⊢/⍵/⍨0≠⍎¨⍵}⍕∘!

Hãy thử trực tuyến!

Hàm tiền tố ngầm. Trả về chữ số chính xác cho một trường hợp thử nghiệm hoặc một chuỗi chữ số cho nhiều trường hợp thử nghiệm.

Cảm ơn @ Adám và @ErikTheOutgolfer cho mỗi 3 byte.

Làm sao?

{⊢/⍵/⍨0≠⍎¨⍵}⍕∘!  Main function. Argument is a number following the !.
              !  Factorial
                then
                Format (stringify)
        ⍎¨⍵}     Execute (turn to number) each digit of the argument
      0         Check if each is 0. This returns a boolean vector
                Swap arguments for the following fn/op
   ⍵/            Replicate. This takes a boolean vector as left arg and returns the truthy elements of the right arg. E.g.: 1 1 0/1 2 3  1 2.
{⊢/              Reduce. This returns the rightmost (last) element of a vector argument.

0

APL NARS, 28 byte, 14 ký tự

{↑≠v/v←⌽⍎¨⍕!⍵}

Tôi không biết tại sao nhưng điều này vượt qua bài kiểm tra:

  q←{↑≠v/v←⌽⍎¨⍕!⍵}       
  q¨1 2 3 4 5 6 7 8 9 10 11 12 13 14
1 2 6 4 2 2 4 2 8 8 8 6 8 2 

0

AWK , 47 57 byte

{for(p=$1;--$1;p=(p*$1)%1e4)while(!(p%10))p/=10;$0=p%10}1

Hãy thử trực tuyến!

Giải pháp ban đầu không xử lý tốt các giá trị đầu vào "lớn". Có thể thêm -Mđể buộc nó hoạt động, nhưng điều đó cũng đòi hỏi nhiều thời gian xử lý hơn.


Vâng, @TobySpeight, infkhông %tốt lắm. :(
Robert Benson

À ... nhìn vào phiên bản của câu hỏi tôi đã trả lời, số lượng lớn không bắt buộc.
Robert Benson

-2

Japt , 6 byte

Đã đến với một vài 6-byters khác nhau nhưng tôi thích cái này nhất. Tôi tin chắc rằng phải có một cách để làm điều đó trong 5, mặc dù.

Êsw ìv

Thử nó


Giải trình

Êtính giai thừa của đầu vào, schuyển đổi nó thành một chuỗi và trở lại một số nguyên sau khi wđã đảo ngược nó, ìchuyển đổi kết quả thành một mảng các chữ số và vtrả về phần tử đầu tiên.


Lựa chọn thay thế

Êì w æ
ÊìÈf Ì
Êì f o
Êsw sg
Êìf ìo
Êìf ìÌ

Mất bao lâu để thực hiện tất cả các trường hợp thử nghiệm?
Toby Speight

@TobySightight; rất dễ kiểm tra bằng cách theo liên kết để thử. Lưu ý rằng 4 trường hợp thử nghiệm gần nhất sẽ thất bại vì giai thừa của chúng lớn hơn số nguyên tối đa của JavaScript.
Shaggy

Vì vậy, nó không thực sự giải quyết vấn đề sau đó? Câu hỏi nói rằng nó phải thành công với giá 1 ≤ N 1.000.000 . Các câu trả lời khác chứng minh rằng bạn không cần lưu trữ giai thừa để tính toán câu trả lời.
Toby Speight

Tôi đã thử kiểm tra trực tuyến, nhưng nó đã hết thời gian trong trường hợp thử nghiệm đầu tiên tôi đã thử (1000).
Toby Speight

-2

Perl 5 , 36 + 10 ( -p -Mbigint) = 46 byte

$"=$_;$_*=$"while$"-=1;($_)=/(.)0*$/

Hãy thử trực tuyến!


Phiên bản TIO không thành công trong hai trường hợp thử nghiệm đầu tiên tôi đã thử: 1000000 f(nên là 4 ) và 100 7(nên là 4 )
Toby Speight

Nó tràn kích thước của một int. Phiên bản mới hoạt động bằng cách sử dụng bigint. Hiệu suất vẫn để lại một cái gì đó được mong muốn vì đó là một tính toán vũ phu. Điều đó có nghĩa là nó hết thời gian trên TIO cho số lượng lớn hơn.
Xcali
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.