Kiểm tra nếu một số đã cho là Số ma cà rồng


14

EDIT: Để tăng độ phức tạp, tôi đã thêm nhiều hơn vào thử thách.

Trong toán học, số ma cà rồng (hoặc số ma cà rồng thật) là số tự nhiên tổng hợp v, với số chữ số chẵn n, có thể được chia thành hai số nguyên x và y mỗi số có n / 2 chữ số và không phải cả hai số có dấu, trong đó v chứa chính xác tất cả các chữ số từ x và từ y, theo bất kỳ thứ tự nào, tính bội số. x và y được gọi là răng nanh.

Tìm hiểu thêm về Số ma cà rồng

Số ma cà rồng

Số ma cà rồng giả tương tự như số ma cà rồng, ngoại trừ răng nanh của số ma cà rồng giả có n chữ số không cần có độ dài n / 2 chữ số. Số giả ma cà rồng có thể có một số chữ số lẻ, ví dụ 126 = 6 × 21.

Đầu vào

Chấp nhận số từ dòng lệnh hoặc stdin

Đầu ra

  • "1260 = 21 * 60" (răng nanh nhỏ hơn trước nếu số đó là Ma cà rồng.)
  • "1261 không phải là Số ma cà rồng." (nếu số này không phải là số Vampire)
  • "126 = 6 * 21". (nếu số này là số ma cà rồng)

EDIT: Nếu số có nhiều răng nanh, hãy hiển thị nó như vậy.

x = fang1a * fang1b = fang2a * fang2b

Tôi đã quyết định không bao gồm ma cà rồng Prime, tôi sẽ không quá nhiệt tình với nó.
st0le

Có lẽ tôi nên thêm Printing nếu là Vampire hay PseudoV Vampire, các bạn nói gì?
st0le

Còn nhiều cặp răng nanh thì sao?
gnibbler

@gnibbler, tôi sẽ bảo vệ nó.
st0le

1
@Nakilon, in chúng theo thứ tự tăng dần. fang1axuất hiện trước fang2akhifang1a < fang2a
st0le

Câu trả lời:


5

Python - 188 ký tự

Không làm số Pseudov Vampire

from itertools import*
n=input()
a=[]
for i in map("".join,permutations(`n`)):x,y=int(i[::2]),int(i[::-2]);a+=[(x,y)]*(x*y==n)
print n,a and"=%s*%s"%min(a)or"is not a Vampire Number"

Cũng không xử lý nhiều cặp (cho 125460) và không gian bị bỏ lỡ sau đó =.
Nakilon

(đã kiểm tra tại đây )
Nakilon

@Nakilon, câu trả lời này có trước sửa đổi cho nhiều cặp
gnibbler

4

Ruby, 190 ký tự

o=[]
[*x.chars].permutation{|r|a=r.pop(x.size/2).join.to_i
r=r.join.to_i
o|=[[a,r]]if a<=r&&a*r==x.to_i}
puts x+(o.any? ? o.map{|i|" = "+i*" * "}*"":" is not a Vampire Number.")
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.