ผลิตภัณฑ์ที่เท่ากับผลรวมและในทางกลับกัน


22

คู่ความสนุกของ equivalences คือ1 + 5 = 2 · 3และ1 · 5 = 2 + 3 มีหลายเช่นนี้เป็นอีกหนึ่งคือ1 + 1 + 8 = 1 · 2 · 5และ1 · 1 · 8 = 1 + 2 + 5 โดยทั่วไปผลิตภัณฑ์ของจำนวนเต็มบวกnเท่ากับผลรวมของจำนวนเต็มบวกnตัวและกลับกัน

ในความท้าทายนี้คุณต้องสร้างชุดค่าผสมจำนวนเต็มบวกทั้งหมดสำหรับอินพุตn> 1โดยไม่รวมการเปลี่ยนลำดับ คุณสามารถส่งออกสิ่งเหล่านี้ในรูปแบบที่เหมาะสม ตัวอย่างเช่นโซลูชันที่เป็นไปได้ทั้งหมดสำหรับn = 3คือ:

(2, 2, 2) (1, 1, 6)
(1, 2, 3) (1, 2, 3)
(1, 3, 3) (1, 1, 7)
(1, 2, 5) (1, 1, 8)

โปรแกรมที่สามารถสร้างชุดค่าผสมสูงสุดสำหรับnสูงสุดในหนึ่งนาทีบนRAM 2GBของฉันแล็ปท็อป Intel Ubuntu 64 บิต หากคำตอบของคุณใช้ RAM มากกว่า 2GB หรือเขียนเป็นภาษาที่ฉันไม่สามารถทดสอบกับซอฟต์แวร์ที่มีให้ได้อย่างอิสระฉันจะไม่ให้คะแนนคำตอบของคุณ ฉันจะทดสอบคำตอบในเวลาสองสัปดาห์นับจากนี้และเลือกผู้ชนะ แน่นอนคำตอบที่ไม่ใช่การแข่งขันภายหลังสามารถโพสต์แน่นอน

เนื่องจากไม่ทราบว่าชุดโซลูชันทั้งหมดสำหรับnทั้งหมดคืออะไรคุณจึงได้รับอนุญาตให้โพสต์คำตอบที่สร้างโซลูชันที่ไม่สมบูรณ์ แต่ถ้าคำตอบอื่นสร้าง (เพิ่มเติม) โซลูชั่นที่สมบูรณ์แม้ว่าสูงสุดnมีขนาดเล็กที่ชนะคำตอบ


เพื่อชี้แจงนี่คือกระบวนการให้คะแนนเพื่อตัดสินผู้ชนะ:

  1. ฉันจะทดสอบโปรแกรมของคุณด้วย n = 2, n = 3, ฯลฯ ... ฉันเก็บเอาต์พุตทั้งหมดของคุณและหยุดเมื่อโปรแกรมของคุณใช้เวลามากกว่าหนึ่งนาทีหรือมากกว่า 2GB RAM แต่ละครั้งที่โปรแกรมรันสำหรับอินพุตที่กำหนด n จะถูกยกเลิกหากใช้เวลามากกว่า 1 นาที

  2. ฉันดูผลลัพธ์ทั้งหมดสำหรับโปรแกรมทั้งหมดสำหรับ n = 2 หากโปรแกรมผลิตโซลูชันที่ใช้ได้น้อยกว่าโปรแกรมอื่นโปรแกรมนั้นจะถูกกำจัด

  3. ทำซ้ำขั้นตอนที่ 2 สำหรับ n = 3, n = 4 และอื่น ๆ ... สถานะล่าสุดของโปรแกรมชนะ


1
ดังนั้นไม่มีคำตอบในภาษาพิเศษ windows?
Conor O'Brien

3
โดยส่วนตัวแล้วฉันไม่ชอบเกณฑ์การให้คะแนน เป็นไปไม่ได้ที่จะรู้ว่าโซลูชันของเราจะใช้งานได้หรือไม่และจะกำหนดระดับเพดานจนกว่าเราจะได้ผลลัพธ์จากการทดสอบในคอมพิวเตอร์ของคุณ ฉันคิดว่าการเขียนโค้ดแบบง่าย ๆน่าจะเป็นคำถามที่ดีกว่า
musicman523

2
ฉันถือว่าการเข้ารหัสไม่ได้รับอนุญาต แต่ข้อ จำกัด นั้นใกล้เคียงกับการไม่สามารถสังเกตเห็นได้
Luis Mendo

1
@ user202729 ฉันไม่ฉันต้องลองแต่ละโปรแกรมสำหรับแต่ละnเพื่อดูว่าโปรแกรมใดสร้างโซลูชันเพิ่มเติม
orlp

2
"เวลาสองสัปดาห์นับจากนี้" คือ 3 วันที่ผ่านมา
GB

คำตอบ:


4

C (gcc) , n = 50000000 กับ 6499 ผลลัพธ์ใน 59 วินาที

เพื่อหลีกเลี่ยงการผลิตมากกว่าเทราไบต์ของเอาต์พุตที่ประกอบด้วย 1s เกือบทั้งหมดลำดับของ (พูด) 49999995 1s ย่อ1x49999995นั้น

#include <stdio.h>
#include <stdlib.h>

static int n, *a1, k1 = 0, *a2, k2 = 0, s1, p1, *factor;

static void out() {
  if (s1 == p1) {
    for (int i = 0; i < k1 && i < k2; i++) {
      if (a1[i] < a2[i])
        return;
      else if (a1[i] > a2[i])
        break;
    }
  }

  for (int i = 0; i < k1; i++)
    printf("%d ", a1[i]);
  printf("1x%d | ", n - k1);
  for (int i = 0; i < k2; i++)
    printf("%d ", a2[i]);
  printf("1x%d\n", n - k2);
}

static void gen2(int p, int s, int m);

static void gen3(int p, int s, int m, int x, int q) {
  int r = s - n + k2 + 2;
  int d = factor[q];
  do {
    if (x * d <= m)
      x *= d;
    q /= d;
  } while (q % d == 0);
  do {
    if (q == 1) {
      a2[k2++] = x;
      gen2(p / x, s - x, x);
      k2--;
    } else {
      gen3(p, s, m, x, q);
    }
    if (x % d != 0)
      break;
    x /= d;
  } while (p / (x * q) >= r - x * q);
}

static void gen2(int p, int s, int m) {
  int n2 = n - k2;
  if (p == 1) {
    if (s == n2)
      out();
  } else if (n2 >= 1 && m > 1) {
    int r = s - n2 + 1;
    if (r < 2 || p < r)
      return;
    if (m > r)
      m = r;
    if (factor[p] <= m)
      gen3(p, s, m, 1, p);
  }
}

static void gen1(int p, int s, int m) {
  int n1 = n - k1;
  p1 = p;
  s1 = s + n1;
  gen2(s1, p1, s + n1 + 1 - n);
  if (n1 != 0) {
    int *p1 = &a1[k1++];
    for (int x = 2; x <= m && p * x <= s + x + n1 - 1; x++) {
      *p1 = x;
      gen1(p * x, s + x, x);
    }
    k1--;
  }
}

int main(int argc, char **argv) {
  if (argc < 2)
    return 1;
  n = atoi(argv[1]);
  if (n < 2)
    return 1;
  a1 = malloc(n * sizeof(int));
  a2 = malloc(n * sizeof(int));
  factor = calloc(4 * n - 1, sizeof(int));
  for (int p = 2; p < 4 * n - 1; p++)
    if (factor[p] == 0) {
      factor[p] = p;
      for (int i = p; i <= (4 * n - 2) / p; i++)
        factor[p * i] = p;
    } else if (factor[p] < factor[p / factor[p]]) {
      factor[p] = factor[p / factor[p]];
    }
  gen1(1, 0, 3 * n - 1);
  return 0;
}

ลองออนไลน์!


3

Mathematica, n = 293 with 12 solution

OP เปลี่ยนความท้าทายและขอให้ป้อนข้อมูล
นี่คือรหัสใหม่ที่ใช้ n เป็นอินพุต
สำหรับ n = 293 คุณจะได้รับ 12 โซลูชั่น

If[#<5,Union[Sort/@Select[Tuples[{1,2,3,4,5,6,7,8,9},{#}],Tr@#==Times@@#&]],For[a=1,a<3,a++,For[b=a,b<3,b++,For[c=b,c<5,c++,For[d=c,d<10,d++,For[e=d,e<300,e++,If[Tr[s=Join[Table[1,#-5],{a,b,c,d,e}]]==Times@@s,Print[s]]]]]]]]&


อินพุต

[N]

คุณสามารถทดสอบอัลกอริทึมนี้บนWolfram Sandboxซึ่งเป็นซอฟต์แวร์ออนไลน์ที่ให้บริการฟรี
เพียงไปตามลิงก์วางโค้ด (ctrl + v) วางอินพุตที่ท้ายรหัสแล้วกด Shift + enter เพื่อเรียกใช้
คุณจะได้รับโซลูชั่นทั้งหมดของฉันในไม่กี่วินาที

นี่คือยังลองออนไลน์! ใน C ++ (gcc)
(ขอบคุณ @ThePirateBay ที่ให้การสนับสนุนและแปลรหัสของฉันเป็นภาษาฟรี)

โปรแกรมนี้สร้างโซลูชันเฉพาะของแบบฟอร์ม {a, b, c} {a, b, c}
ซึ่งหมายถึง a + b + c = a * b * c

ใช้เวลาคำนวณ 1 วินาที

สิบสองโซลูชั่นคือ:

{1,1 ... , 1,1,1,2,293} {1,1 ... , 1,1,1,2,293}
{1,1 ... , 1,1,1,3,147} {1 , 1 ... , 1,1,1,3,147}
{1,1 ... , 1,1,1,5,74}} {1,1 ... , 1,1,1,5,74}
{1,1 ... , 1,1,2,2,98} {1,1 ... , 1,1,2,2,98}
{1,1 ... , 1,1,2 3,59} {1,1 ... , 1,1,2,3,59}
{1,1 ... , 1,1,2,5,33} {1,1 ... , 1, 1,2,5,33}
{1,1 ... , 1,1,2,7,23} {1,1 ... , 1,1,2,7,23}
{1,1 .. ., 1,1,2,8,20} {1,1 ... , 1,1,2,8,20}
{1,1 ... , 1,1,3,3,37} {1 , 1 ... , 1,1,3,3,37}
{1,1 ... , 1,1,3,4,27} {1,1 ... , 1,1,3,4, 27}
{1,1 ... , 1,1,3,7,15} {1,1 ... , 1,1,3,7,15}
{1,1 ... , 1,2, 2,6,13} {1,1 ... , 1,2,2,6,13}


1
"หากคำตอบของคุณ [... ] เขียนด้วยภาษาที่ฉันไม่สามารถทดสอบด้วยซอฟต์แวร์ที่มีให้ได้อย่างอิสระฉันจะไม่ให้คะแนนคำตอบของคุณ"
Leun Nun

4
@GB "คุณได้รับอนุญาตให้โพสต์คำตอบที่สร้างโซลูชันที่ไม่สมบูรณ์"
user202729

1
โปรแกรมของฉัน ".. สร้างชุดค่าผสมที่มากที่สุดสำหรับค่าสูงสุด n ในหนึ่งนาที" ซึ่งไม่ใช่ hardcoded.It เพิ่งพบโซลูชัน 12 ตัวแรกที่ "ง่ายที่สุด" ในไม่กี่นาที
J42161217

1
อาจชัดเจนว่าnควรเป็นอินพุต ฉันชี้แจงว่าตอนนี้ มันจะไม่ปรากฏโปรแกรมของคุณใช้เวลาใส่n
orlp

2
@orlp แก้ไข! โปรแกรมของฉันรับ n ใด ๆ เป็นอินพุต สำหรับ n = 293 คุณจะได้รับ 12 โซลูชั่น ยกเลิกการโหวตโปรดถ้าทุกอย่างได้ผล!
J42161217

2

Python 2 , n = 175, 28 ผลลัพธ์ใน 59 วินาที

ทำให้ช้าลงเล็กน้อยโดยใช้ปัจจัยการลด 2 แต่รับวิธีแก้ปัญหาเพิ่มเติมโดยเริ่มจาก n = 83

ฉันได้รับผลลัพธ์มากถึง 92 บน TIO ในการทำงานครั้งเดียว

def submats(n, r):
    if n == r:
        return [[]]
    elif r > 6:
        base = 1
    else:
        base = 2
    mx = max(base, int(n*2**(1-r)))

    mats = []
    subs = submats(n, r+1)
    for m in subs:
        if m:
            mn = m[-1]
        else:
            mn = 1
        for i in range(mn, mx + 1):
            if i * mn < 3*n:
                mats += [m + [i]]
    return mats

def mats(n):
    subs = []
    for sub in submats(n, 0):
        sum = 0
        prod = 1
        for m in sub:
            sum += m
            prod *= m
        if prod > n and prod < n*3:
            subs += [[sub, sum, prod]]
    return subs

def sols(n):
    mat = mats(n)
    sol = [
        [[1]*(n-1)+[3*n-1],[1]*(n-2)+[2,2*n-1]],
    ]
    if n > 2:
        sol += [[[1]*(n-1)+[2*n+1],[1]*(n-2)+[3,n]]]
    for first in mat:
        for second in mat:
            if first[2] == second[1] and first[1] == second[2] and [second[0], first[0]] not in sol:
                sol += [[first[0], second[0]]];
    return sol

ลองออนไลน์!


1
"เก็บ 5 องค์ประกอบ [1..2] และ จำกัด 3n ... " ฉันดีใจที่คุณชอบอัลกอริธึมของฉัน ;-)
J42161217

ฉันทำสิ่งที่คล้ายกันในเวอร์ชัน Ruby แล้วและตอนนี้ฉันกำลังพยายามลบข้อ จำกัด ดังกล่าว
GB

สำหรับ n ที่ให้มามีการแก้ปัญหาจำนวนเท่าใดที่ฮาร์ดโค้ดในอัลกอริทึมของคุณ
J42161217

ไม่ใช่ฮาร์ดโค้ดจริง ๆ : 2 โซลูชั่นมาตรฐานสามารถสร้างขึ้นได้โดยใช้ทางลัด (ยกเว้น n = 2 ซึ่งเป็นชุดเดียวกัน) และโดยการข้ามสิ่งเหล่านี้ฉันสามารถ จำกัด ช่วงเป็น 2n แทนที่จะเป็น 3n หากนี่เป็นฮาร์ดโค้ดฉันจะเปลี่ยนมัน
GB

1
สำหรับ 61 ผลลัพธ์ของฉันจะเป็น 28 ของคุณฉันจำได้ว่ามันเป็น 27 ... อาจเป็นไปได้ว่าฉันทำผิดพลาด
RosLuP

1

Ruby , n = 12 ได้รับ 6 โซลูชั่น

อย่างน้อยใน TIO ผลลัพธ์ปกติสำหรับ 1 ถึง 11

->n{
  arr=[*1..n*3].product(*(0..n-2).map{|x|
    [*1..[n/3**x,2].max]|[1]
  }).select{|a|
    a.count(1) >= n-4
  }.map(&:sort).uniq
  arr.product(arr).map(&:sort).uniq.select{|r|
    r[0].reduce(&:+) == r[1].reduce(&:*) &&
    r[0].reduce(&:*) == r[1].reduce(&:+)
  }
}

ลองออนไลน์!

รับ 10 ผลลัพธ์ภายในหนึ่งนาทีสำหรับ n = 13 บนแล็ปท็อปของฉัน


1

Mathematica, n = 19 พร้อม 11 คำตอบ

นี่คือคำตอบใหม่ของฉันตามเกณฑ์ใหม่ของ OP

(SOL = {};
For[a = 1, a < 3, a++, 
For[b = a, b < 3, b++, 
For[c = b, c < 5, c++, 
 For[d = c, d < 6, d++, 
  For[e = d, e < 3#, e++, 
   For[k = 1, k < 3, k++, 
    For[l = k, l < 3, l++, 
     For[m = l, m < 5, m++, 
      For[n = m, n < 6, n++, For[o = n, o < 3#, o++,
        s = Join[Table[1, # - 5], {a, b, c, d, e}];
        t = Join[Table[1, # - 5], {k, l, m, n, o}];            
        If[Tr[s[[-# ;;]]] == Times @@ t[[-# ;;]] && 
          Tr[t[[-# ;;]]] == Times @@ s[[-# ;;]], 
         AppendTo[SOL,{s[[-#;;]],t[[-#;;]]}]]]]]]]]]]]];
Union[SortBy[#,Last]&/@SOL])&

ถ้าคุณให้อินพุต [n] ในตอนท้ายโปรแกรมจะแสดงวิธีแก้ปัญหา

นี่คือผลลัพธ์ของฉัน (บนแล็ปท็อปเครื่องเก่าของฉัน 64-bit 2.4GHz)

n-> โซลูชัน
2 -> 2
3 -> 4
4 -> 3
5 -> 5
6 -> 4
7 -> 6
8 -> 5
9 -> 7
10 -> 7 10 -> 7
11 -> 8
12 -> 6 (ใน 17 วินาที)
13 -> 10 (ใน 20 วินาที)
14 -> 7 (ใน 25 วินาที)
15 -> 7 (ใน 29 วินาที)
16 -> 9 (ใน 34 วินาที)
17 -> 10 (ใน 39 วินาที)
18 - > 9 (ใน 45 วินาที)
19 -> 11 (ใน 51 วินาที)
20 -> 7 (ใน 58 วินาที)


1

Haskell โซลูชั่นจำนวนมากรวดเร็ว

import System.Environment

pr n v = prh n v v

prh 1 v l = [ [v] | v<=l ]
prh n 1 _ = [ take n $ repeat 1 ]
prh _ _ 1 = []
prh n v l = [ d:r | d <-[2..l], v `mod` d == 0, r <- prh (n-1) (v`div`d) d ]

wo n v = [ (c,k) | c <- pr n v, let s = sum c, s>=v,
                   k <- pr n s, sum k == v, s>v || c>=k ]

f n = concatMap (wo n) [n+1..3*n]

main = do [ inp ] <- getArgs
          let results = zip [1..] $ f (read inp)
          mapM_ (\(n,s) -> putStrLn $ (show n) ++ ": " ++ (show s)) results

fคำนวณวิธีแก้ปัญหาmainฟังก์ชั่นเพิ่มรับอินพุตจากบรรทัดคำสั่งและการจัดรูปแบบและการนับ


รวบรวมเช่นนี้ghc -O3 -o prodsum prodsum.hsและเรียกใช้ด้วยอาร์กิวเมนต์บรรทัดคำสั่ง:./prodsum 6
Christian Sievers

0

Haskell , n = 10 พร้อมโซลูชั่น 2 ตัว


import           Data.List

removeDups = foldl' (\seen x -> if x `elem` seen then seen else x : seen) []
removeDups' = foldl' (\seen x -> if x `elem` seen then seen else x : seen) []

f n= removeDups $ map sort filterSums
  where maxNumber = 4
        func x y = if (((fst x) == (fst.snd$y)) && ((fst y) == (fst.snd$x)))
                     then [(snd.snd$x),(snd.snd$y)]
                     else [[],[]]
        pOf = removeDups' $ (map sort (mapM (const [1..maxNumber]) [1..n]))
        sumOf = map (\x->((sum x),((product x), x))) pOf
        filterSums = filter (\x-> not$(x == [[],[]])) (funcsumOfsumOf)

สิ่งนี้ทำหน้าที่เหมือนอึ แต่อย่างน้อยฉันก็คงแก้ไขแล้วดังนั้นตอนนี้ฉันก็จัดการกับความท้าทายได้แล้ว!

ลองออนไลน์!


สำหรับ n = 2 คุณได้รับ ["[3,3] [2,3]", "[2,2] [2,2]", "[1,3] [2,2]", "[1, 2] [1,3] "," [1,1] [1,2] "] ซึ่งผิด
J42161217

การแก้ปัญหาทั้งหมดดูเหมือนจะผิดจริง
GB

@ Jenny_mathy มันเป็นอย่างไร 3 + 3 คือ 6 และ 2 * 3 คือ 6 ฉันเข้าใจผิดคำถามหรือไม่
maple_shaft

คุณพลาด "โอละพ่อ"
J42161217

@Jenny_mathy ทำผิดพลาดใบ้ในส่วนของฉัน! ฉันแก้ไขมันควรจะทำงานตอนนี้
maple_shaft

0

ความจริง, n = 83 ใน 59 วินาทีที่นี่

-- copy the below text in the file name "thisfile.input" 
-- and give something as the command below in the Axiom window:
-- )read C:\Users\thisuser\thisdirectory\thisfile

)cl all
)time on

-- controlla che l'array a e' formato da elementi  a.i<=a.(i+1)
tv(a:List PI):Boolean==(for i in 1..#a-1 repeat if a.i> a.(i+1) then return false;true)

-- funzione incremento: incrementa a, con #a=n=b/3,sotto la regola di "reduce(+,a)+#a-1>=reduce(*,a)"
-- e che n<reduce(*,a)<3*n ed reduce(+,a)<3*n 
inc3(a:List PI):INT==
   i:=1; n:=#a; b:=3*n
   repeat
      if i>n  then return 0
      x:=reduce(*,a)
      if x>=b then a.i:=1
      else
          y:=reduce(+,a)
          if y>b then a.i=1
          else if y+n-1>=x then
                      x:=x quo a.i
                      a.i:=a.i+1
                      x:=x*a.i
                      if tv(a) then break
                      else a.i:=1
          else a.i:=1
      i:=i+1
   if x<=n then return inc3(a) -- x<=n non va
   x

-- ritorna una lista di liste di 4 divisori di n
-- tali che il loro prodotto e' n
g4(n:PI):List List PI==
  a:=divisors(n)
  r:List List PI:=[]
  for i in 1..#a repeat
     for j in i..#a repeat
        x:=a.i*a.j
        if x*a.j>n then break
        for k in j..#a repeat
            y:=x*a.k
            if y*a.k>n then break
            for h in k..#a repeat
                z:=y*a.h
                if z=n  then r:=cons([a.h,a.k,a.j,a.i],r)
                if z>=n then break 
  r

-- ritorna una lista di liste di 3 divisori di n
-- tali che il loro prodotto e' n
g(n:PI):List List PI==
  a:=divisors(n)
  r:List List PI:=[]
  for i in 1..#a repeat
     for j in i..#a repeat
        x:=a.i*a.j
        if x*a.j>n then break
        for k in j..#a repeat
            y:=x*a.k
            if y=n  then r:=cons([a.k,a.j,a.i],r)
            if y>=n then break
  r

-- cerca che [a,b] nn si trovi gia' in r
searchr(r:List List List PI,a:List PI,b:List PI):Boolean==
  aa:=sort(a); bb:=sort(b)
  for i in 1..#r repeat
      x:=sort(r.i.1);y:=sort(r.i.2)
      if x=aa and y=bb then return false
      if x=bb and y=aa then return false
  true

-- input n:PI
-- ritorna r, tale che se [a,b] in r
-- allora #a=#b=n
--        ed reduce(+,a)=reduce(*,b) ed reduce(+,b)=reduce(*,a)
f(n:PI):List List List PI==
  n>100000 or n<=1 =>[]
  a:List PI:=[]; b:List PI:=[]; r:List List List PI:=[]
  for i in 1..n repeat(a:=cons(1,a);b:=cons(1,b))
  if n~=72 and n<86 then  m:=min(3,n)
  else                    m:=min(4,n) 
  q:=reduce(*,a) 
  repeat
    w:=reduce(+,a)
    if n~=72 and n<86 then x:= g(w)
    else                   x:=g4(w)
    if q=w then r:=cons([copy a, copy a],r)
    for i in 1..#x repeat
           for j in 1..m repeat
                  b.j:=(x.i).j
           -- per costruzione abbiamo che reduce(+,a)= prodotto dei b.i=reduce(*,b)
           -- manca solo di controllare che reduce(+,b)=reduce(*,a)=q
           if reduce(+,b)=q and searchr(r,a,b) then r:=cons([copy a, copy b],r)
    q:=inc3(a)
    if q=0 then break
  r

ผล:

 for i in 2..83 repeat output [i, # f(i)]
   [2,2][3,4][4,3][5,5][6,4][7,6][8,5][9,7][10,7][11,8][12,6][13,10][14,7][15,7]
   [16,10][17,10][18,9][19,12][20,7][21,13][22,9][23,14][24,7][25,13][26,11]
   [27,10][28,11][29,15][30,9][31,16][32,11][33,17][34,9][35,9][36,13][37,19]
   [38,11][39,14][40,12][41,17][42,11][43,20][44,12][45,16][46,14][47,14][48,13]
   [49,16][50,14][51,17][52,11][53,20][54,15][55,17]
   [56,14][57,20][58,17][59,16][60,15][61,28][62,15][63,16][64,17][65,18]
   [66,14][67,23][68,20][69,19][70,13][71,18][72,15][73,30][74,15][75,17][76,18]
   [77,25][78,16][79,27][80,9][81,23][82,17][83,26]


 f 3
    [[[1,2,5],[8,1,1]],[[1,3,3],[7,1,1]],[[1,2,3],[1,2,3]],[[2,2,2],[6,1,1]]]
                                     Type: List List List PositiveInteger
                                   Time: 0.07 (IN) + 0.05 (OT) = 0.12 sec

วิธีการทำงานเหนือข้อความใน Axiom คือคัดลอกข้อความนั้นทั้งหมดในไฟล์บันทึกไฟล์ด้วยชื่อ: Name.input ในหน้าต่าง Axiom ใช้ ") read absolutepath / Name"
ผลลัพธ์: (# f (i) ค้นหาความยาวของอาร์เรย์ f (i) นั่นคือจำนวนวิธีแก้ไข)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.