ฉันคิดเลข (Cop's Thread)


32

Robber's Thread ที่นี่

ในการท้าทายตำรวจตำรวจนี้จะคิดว่าจำนวนเต็มบวก พวกเขาจะเขียนโปรแกรมหรือฟังก์ชั่นที่ส่งออกหนึ่งค่าเมื่อระบุหมายเลขเป็นอินพุตและค่าอื่นสำหรับอินพุตจำนวนเต็มบวกอื่น ๆ ทั้งหมด ตำรวจจะเปิดเผยโปรแกรมในคำตอบที่เก็บหมายเลขเป็นความลับ โจรสามารถถอดรหัสคำตอบโดยค้นหาหมายเลข

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

มันอาจจะไปโดยไม่บอก แต่คุณควรจะให้คะแนนคำตอบของคุณ นั่นคือคุณควรรู้ว่าเครื่องตัดสินใจของคุณยอมรับคุณค่าใด เพียงแค่รู้ว่ามีอย่างใดอย่างหนึ่งไม่เพียงพอ

การใช้ฟังก์ชั่น Cryptographic

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


1
หากคุณอนุญาตฟังก์ชั่น crytographic ฉันขอแนะนำให้กำหนดเวลาในโปรแกรม
Okx

12
ฉันลงคะแนนความท้าทายนี้เพราะในภาษาส่วนใหญ่สามารถแตกได้ง่ายๆโดยใช้อัลกอริทึมการแมปหรือลูปแบบง่าย ฉันคิดว่ามันง่ายเกินไปสำหรับความท้าทายของตำรวจและโจร
Mr. Xcoder

2
ฉันรู้สึกเหมือนว่าจะมีตำรวจจำนวนมากที่รู้คุณค่าที่ยอมรับได้ (อาจจะเล็กที่สุด) แต่ไม่รู้ว่ามีคำตอบที่ถูกต้องมากกว่านี้หรือไม่
ฮิสโทแกต

12
@ Mr.Xcoder คุณมีอิสระที่จะลงคะแนนอย่างไรก็ตามฉันจะชี้ให้เห็นว่ามันเป็นประเด็นที่ท้าทายและไม่ใช่ความเห็นของฉัน ความท้าทายส่วนใหญ่เป็นเรื่องสนุกสำหรับตำรวจที่ต้องบังคับให้สัตว์เดรัจฉานยากที่สุดเท่าที่จะทำได้โดยชะลอการคำนวณ คำตอบที่สร้างสรรค์มากขึ้นจะทำให้สัตว์เดียรัจฉานบังคับให้ต้องใช้จำนวนมากขึ้นและน้อยลง
ข้าวสาลีตัวช่วยสร้าง

1
@WeatWizard ฉันคิดว่ามันจะไม่ชนะ แต่มันเป็นไปไม่ได้ที่จะถอดรหัสเช่นโปรแกรมที่เพิ่งเปรียบเทียบอินพุตกับA(9,9)ที่Aเป็นฟังก์ชันของ Ackerman
ข้อบกพร่อง

คำตอบ:


10

Tampio , แคร็ก

m:n tulos on luvun funktio tulostettuna m:ään, missä luku on x:n kerrottuna kahdella seuraaja, kun x on luku m:stä luettuna
x:n funktio on luku sadalla kerrottuna sadalla salattuna, missä luku on x alempana sadan seuraajaa tai nolla
x:n seuraajan edeltäjä on x
x:n negatiivisena edeltäjä on x:n seuraaja negatiivisena
nollan edeltäjä on yksi negatiivisena
x salattuna y:llä on örkin edeltäjä, missä örkki on x:n seuraajan seuraaja jaettuna y:llä korotettuna kahteen
sata on kiven kolo, missä kivi on kallio katkaistuna maanjäristyksestä
kallio on yhteenlasku sovellettuna mannerlaatan jäseniin ja tulivuoren jäseniin
tulivuori on nolla lisättynä kallioon
mannerlaatta on yksi lisättynä mannerlaattaan
maanjäristys on kallion törmäys
a:n lisättynä b:hen kolo on yhteenlasku kutsuttuna a:lla ja b:n kololla
tyhjyyden kolo on nolla
x:n törmäys on x tutkittuna kahdellatoista, missä kaksitoista on 15 ynnä 6
x ynnä y on y vähennettynä x:stä

ทำงานด้วย:

python3 suomi.py file.suomi --io

คำแนะนำสำหรับการติดตั้งล่ามจะรวมอยู่ในหน้า Github โปรดบอกว่าคุณมีปัญหาในการทำงานนี้หรือไม่

โปรแกรมใน pseudocode โปรแกรมทำงานช้ามากเพราะล่ามของฉันไม่มีประสิทธิภาพมากนัก นอกจากนี้ฉันไม่ได้ใช้การเพิ่มประสิทธิภาพที่เลือกใช้ซึ่งสามารถลดเวลาการประเมินจากหลายนาทีเป็นประมาณ 10 วินาที


1
Tampio ไม่มีล่ามออนไลน์หรือไม่
ขนดก

@Shaggy ยังโชคไม่ดี ฉันน่าจะถามว่ามันสามารถเพิ่มลงใน TIO ได้หรือไม่
fergusq


5

Perl 6 - แคร็ก!

ในความหมายที่เข้มงวดนี่เป็นสิ่งที่ยอมรับไม่ได้เพราะไม่ได้พยายามอย่างมากที่จะชนะ แต่หวังว่าจะนำเสนอปริศนาที่น่ารื่นรมย์

มันเป็นโปรแกรม "คณิตศาสตร์บริสุทธิ์" ซึ่งมีจุดมุ่งหมายที่จะแตกโดยการไตร่ตรอง ฉันแน่ใจว่าคุณสามารถแก้ปัญหาการเขียนโปรแกรม (หลังจากทำความสะอาดการเขียนโปรแกรมเลอะเทอะฉันมุ่งมั่นตั้งใจ) แต่สำหรับ "เครดิตเต็ม" (: -)) คุณควรจะสามารถอธิบายสิ่งที่มันทำในพื้นที่คณิตศาสตร์ .

sub postfix:<!>(Int $n where $n >= 0)
{
	[*] 1 .. $n;
}

sub series($x)
{
	[+] (0 .. 107).map({ (i*($x % (8*π))) ** $_ / $_! });
}

sub prefix:<∫>(Callable $f)
{
	my $n = 87931;
	([+] (0 .. $n).map({
		π/$n * ($_ == 0 || $_ == $n ?? 1 !! 2) * $f(2 * $_/$n)
	})).round(.01);
}

sub f(Int $in where $in >= 0)
{
	 { series($_)**11 / series($in * $_) }
}

คุณควรถอดรหัสฟังก์ชั่น f () (นั่นคือฟังก์ชั่นที่รับหมายเลขธรรมชาติหนึ่งตัวและส่งกลับผลลัพธ์หนึ่งในสองรายการ) คำเตือน:ตามที่แสดงโดย @Nitrodon โปรแกรมจะทำงานผิดปกติและ "ยอมรับ" อินพุตจำนวนไม่สิ้นสุด ตั้งแต่ฉันมีความคิดของวิธีการแก้ไขมันไม่ฉันเพียงแค่สังเกตสำหรับแก้อนาคตที่จำนวนที่ผมมีอยู่ในใจไม่น้อยกว่า 70000

หากคุณพยายามเรียกใช้สิ่งนี้ใน TIO มันจะหมดเวลา นี่คือเจตนา (เนื่องจากมันไม่ควรที่จะทำงานเลย!)

ในที่สุดฉันพยายามเขียนโค้ดที่ชัดเจนพอสมควร คุณควรอ่านได้อย่างคล่องแคล่วเป็นส่วนใหญ่แม้ว่าคุณจะไม่คุ้นเคยกับภาษา ข้อสังเกตสองข้อเท่านั้น: เครื่องหมายวงเล็บเหลี่ยม [ op ] หมายถึงการลด ("การพับ" ในภาษา Haskell lingo) รายการที่มีตัวดำเนินการop ; และย่อยที่เรียกว่าpostfix:<!>จริงกำหนดตัวดำเนินการ postfix ชื่อ! (เช่นใช้เช่น5!- มันทำสิ่งที่คุณคาดหวัง) ในทำนองเดียวกันสำหรับprefix:<∫>หนึ่ง

ฉันหวังว่าใครบางคนจะสนุกกับคนนี้ แต่ฉันไม่แน่ใจว่าฉันมีปัญหาหรือไม่ รู้สึกอิสระที่จะทุบตีฉันในความคิดเห็น: —)

ลองออนไลน์!



4

JavaScript, แคร็ก

ฉันสับสนกับเรื่องนี้มากที่สุดเท่าที่จะทำได้จนถึงจุดที่มันไม่พอดีกับคำตอบนี้

ลองที่นี่! คลิกเรียกใช้จากนั้นพิมพ์คอนโซลguess(n)

ส่งคืนไม่ได้กำหนดถ้าคุณได้รับคำตอบที่ผิดกลับเป็นจริงมิฉะนั้น

แก้ไข: อย่างใดฉันมองข้ามส่วนเกี่ยวกับคะแนนของฉันเป็นจำนวน อืมเลขของฉันใหญ่มาก ขอให้โชคดีในการแก้มันต่อไป



3

เยลลี่คะแนน: ... 1 ( แตก )

5ȷ2_c⁼“ḍtṚøWoḂRf¦ẓ)ṿẒƓSÑÞ=v7&ðþạẆ®GȯżʠṬƑḋɓḋ⁼Ụ9ḌṢE¹’

ลองออนไลน์!

1คาดหวังให้ฉันเปิดเผยมันจริงๆเหรอ? มาเลย! โอ้ดีมันมีคะแนน 134 นั่นฉันพูดมัน!



@ Mr.Xcoder มันใช้เวลานาน ...
Erik the Outgolfer

ฉันเพิ่งเพิ่มÇ€Gและช่วง1...1000เป็นอินพุต: P
Mr. Xcoder

คุณเห็น5ȷ2_ส่วนถูกไหม
Erik the Outgolfer

ไม่ฉันไม่ได้ดูรหัส lol ด้วยซ้ำ เพิ่งเพิ่มชุดทดสอบและดูว่ามี1อะไรอยู่จากนั้นฉันได้วางสตริงตั้งแต่ต้นจนถึง1ในสคริปต์ Python และนับจำนวนศูนย์ก่อน ...
Mr. Xcoder

3

Python 2 (แตก)

ฉันจะไม่แนะนำให้ใช้กำลังดุร้าย หวังว่าคุณจะชอบเครื่องกำเนิดไฟฟ้า!

print~~[all([c[1](c[0](l))==h and c[0](l)[p]==c[0](p^q) for c in [(str,len)] for o in [2] for h in [(o*o*o+o/o)**o] for p,q in [(60,59),(40,44),(19,20),(63,58),(61,53),(12,10),(43,42),(1,3),(35,33),(37,45),(17,18),(32,35),(20,16),(22,30),(45,43),(48,53),(58,59),(79,75),(68,77)]] + [{i+1 for i in f(r[5])}=={j(i) for j in [q[3]] for i in l} for q in [(range,zip,str,int)] for r in [[3,1,4,1,5,9]] for g in [q[1]] for s in [[p(l)[i:i+r[5]] for p in [q[2]] for i in [r[5]*u for f in [q[0]] for u in f(r[5])]]] for l in s + g(*s) + [[z for y in [s[i+a][j:j+r[0]] for g in [q[0]] for a in g(r[0])] for z in y] for k in [[w*r[0] for i in [q[0]] for w in i(r[0])]] for i in k for j in k] for f in [q[0]]]) for l in [int(raw_input())]][0]

ลองออนไลน์!

เอาต์พุต1สำหรับตัวเลขที่ถูกต้องเป็น0อย่างอื่น



@LeakyNun Wow เร็วกว่าที่ฉันคาดไว้เล็กน้อย
Sisyphus

การหาตัวแก้ซูโดกุออนไลน์นั้นไม่ยาก
Leun Nun

มีปัญหาบางอย่างกับตัวตรวจสอบซูโดกุของคุณ: คุณตรวจสอบเส้นแนวนอนและเส้นแนวตั้งเป็นไร แต่คุณตรวจสอบแค่สามเซลล์แรกเท่านั้น
Leun Nun

@LeakyNun คุณขวากำลังเป็นที่ควรจะเป็นa i+aฉันได้แก้ไขแล้ว แต่มันก็แตกได้แล้วยัก
Sisyphus

3

Haskell , แตก

นี่ขึ้นอยู่กับเลขคณิต โปรดทราบว่าmyfunเป็นฟังก์ชั่นที่เกิดขึ้นจริงในขณะที่hเป็นเพียงฟังก์ชั่นผู้ช่วย

h k = sum $ map (\x -> (x*x)**(-1) - 1/(x**(2-1/(fromIntegral k)))) [1..2*3*3*47*14593]
myfun inp | inp == (last $ filter (\k -> h k < (-7.8015e-5)  )[1..37*333667-1]) = 1
          | otherwise = 0

main = print $ show $ myfun 42 -- replace 42 with your input

ลองออนไลน์!


โปรแกรมจะต้องเสร็จสิ้นโดยไม่มีข้อผิดพลาดในอินพุตทั้งหมด สิ่งนี้จะเสร็จสิ้นภายในหนึ่งวันในหน่วยความจำไม่ จำกัด หรือไม่?
michi7x7

คุณต้องการหน่วยความจำค่อนข้างน้อย แต่แน่นอนว่าคุณไม่ต้องการหน่วยความจำไม่ จำกัด มันอาจขึ้นอยู่กับการนำไปใช้และขึ้นอยู่กับฮาร์ดแวร์ของคุณ แต่เห็นได้ชัดว่ามันถูกออกแบบมาให้ใช้เวลาในการคำนวณเพื่อให้การโจมตีแบบเดรัจฉานบังคับได้ยากและกระตุ้นการวิเคราะห์โปรแกรม ขอให้โชคดี :)
ข้อบกพร่อง


2

Java, แคร็กโดย Nitrodon

import java.math.BigDecimal;

public class Main {
    private static final BigDecimal A = BigDecimal.valueOf(4);
    private static final BigDecimal B = BigDecimal.valueOf(5, 1);
    private static final BigDecimal C = BigDecimal.valueOf(-191222921, 9);
    private static BigDecimal a;
    private static BigDecimal b;
    private static int c;

    private static boolean f(BigDecimal i, BigDecimal j, BigDecimal k, BigDecimal l, BigDecimal m) {
        return i.compareTo(j) == 0 && k.compareTo(l) >= 0 && k.compareTo(m) <= 0;
    }

    private static boolean g(int i, int j, BigDecimal k) {
        c = (c + i) % 4;
        if (j == 0) {
            BigDecimal l = a; BigDecimal m = b;
            switch (c) {
                case 0: a = a.add(k); return f(C, b, B, l, a);
                case 1: b = b.add(k); return f(B, a, C, m, b);
                case 2: a = a.subtract(k); return f(C, b, B, a, l);
                case 3: b = b.subtract(k); return f(B, a, C, b, m);
                default: return false;
            }
        } else {
            --j;
            k = k.divide(A);
            return g(0, j, k) || g(1, j, k) || g(3, j, k) || g(3, j, k) || g(0, j, k) || g(1, j, k) || g(1, j, k) || g(3, j, k);
        }
    }

    private static boolean h(int i) {
        a = BigDecimal.ZERO; b = BigDecimal.ZERO; c = 0;
        return g(0, i, BigDecimal.ONE);
    }

    public static void main(String[] args) {
        int i = Integer.valueOf(args[0]);
        System.out.println(!h(i) && h(i - 1) ? 1 : 0);
    }
}

ฉันต้องการลองอะไรที่แตกต่างจากฟังก์ชั่นแฮชและสุ่ม คุณสามารถส่งตัวเลขเป็นอาร์กิวเมนต์บรรทัดคำสั่ง เอาต์พุต1ถ้ากำหนดจำนวนที่ถูกต้องและเป็น0อย่างอื่น สำหรับตัวเลขขนาดเล็กคุณสามารถลองออนไลน์ได้

คำแนะนำ:

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

คำอธิบาย:

โปรแกรมนี้ดำเนินการสำรวจเส้นทางของตัวแปรกำลังสอง (ประเภท 2) ของเส้นโค้ง Koch ที่รู้จักกันดี(ภาพจาก Wikipedia): หมายเลขลับคือการทำซ้ำครั้งแรกที่ไม่ผ่านจุด (B, C) Nitrodonได้รับการยอมรับอย่างถูกต้องยกเว้นการวนซ้ำครั้งแรกเราสามารถเพิกเฉยการวนซ้ำของส่วนโค้งทั้งหมดอย่างปลอดภัยซึ่งไม่ผ่านจุดที่กำหนด โดยการเปลี่ยนสายในโปรแกรมเดิมดังนั้นเราสามารถตรวจสอบหมายเลขที่ถูกต้องแม้ในล่ามออนไลน์

Quadratic_Koch_curve_type2_iterations.png


แคร็กฉันคิดว่า; เวลาทำงานนานเกินไปในการตรวจสอบโดยตรง แต่ฉันตรวจสอบด้วยค่าที่ง่ายขึ้น
Nitrodon


1

ระดับแปดเสียง, คะแนน: ???

มันค่อนข้างรับประกันว่าจะไม่มีหมายเลขอื่นใดที่จะมีตัวเลขสุ่ม 20 หมายเลขที่เหมือนกันในตอนท้ายของรายการ1e8ตัวเลข

function val = cnr(num)
rand("seed", num);
randomints = randi(flintmax-1,1e4,1e4);
val = isequal(randomints(end+(-20:0))(:), ...
 [7918995738984448
  7706857103687680
  1846690847916032
  6527244872712192
  5318889109979136
  7877935851634688
  3899749505695744
  4256732691824640
  2803292404973568
  1410614496854016
  2592550976225280
  4221573015797760
  5165372483305472
  7184095696125952
  6588467484033024
  6670217354674176
  4537379545153536
  3669953454538752
  5365211942879232
  1471052739772416
  5355814017564672](:));
end

เอาท์พุท1สำหรับหมายเลขลับ0มิฉะนั้น

ฉันทำสิ่งนี้ใน Octave 4.2.0


"โหมดสลีปและการชะลอตัวอื่น ๆ สามารถลบออกได้เมื่อ bruteforcing"

ขอให้โชคดี :)


ดูเหมือนว่าจะไม่ได้ใช้ tio ด้วย
Okx

1
@Okx หมดเวลากับ TIO แต่ทำงานในเวอร์ชันเดสก์ท็อป
Rɪᴋᴇʀ

1
ทำไมต้องลงคะแนน
ข้าวสาลีตัวช่วยสร้าง

3
@WeatWizard อาจเป็นเพราะในทางทฤษฎีแล้วมันมีหลายตัวเลข นอกจากนี้มันน่าเบื่อเลย ฉันอยากจะเห็นวิธีแก้ปัญหาทางคณิตศาสตร์มากขึ้น RNG น่าเบื่อมาก
2560

1
@Riker แต่เนื่องจากคุณเดาว่าเป็นเมล็ดพันธุ์ให้กับ RNG เขาจึงใช้ RNG เป็นหน้าที่ของเขาซึ่งแน่นอนแล้ว แต่ใช่เมื่อพิจารณาว่ามันขึ้นอยู่กับการย้อนกลับของสิ่งที่คุณหวังว่าจะเป็นฟังก์ชั่นทางเดียวก็อาจทำได้เพียงแค่เข้ารหัสสตริง "จริง" ด้วยตัวเลขสุ่มแล้วความท้าทายเกือบจะทำลายรูปแบบการเข้ารหัสที่เลือก เพื่อค้นหากุญแจส่วนตัว
Shufflepants

1

Lyคะแนน 239 แตก

(1014750)1sp[l1+sp1-]28^RrnI24^=u;

ลองออนไลน์!

ฉันเป็นธนาคารที่ไม่มีใครรู้ว่านอนอยู่ที่นี่แม้ว่าฉันจะรู้ได้ง่ายว่ามันจะเปลี่ยน ... เหงื่อออก

คำอธิบาย:

(1014750)1sp[l1+sp1-]              # meaningless code that counts up to 1014750 and discards the result
                     28^Rr         # range from 255 to 0
                          nI       # get the index from the range equal to the input
                            24^=   # check if it's 16
                                u; # print the result


1

Brain-Flakคะแนน 1574 ( แตก )

<>(((((((((((((((((((([([(((()()()){}){}){}])]){})))){}{}{}{}()){}){})){}{})){}{})){}((((((((()()){}){}){}){}[()]){}){}){}){}())){})){}){}{}{}){})(((((((((((((((((((()()){}){}()){}){}){}()){}){}()){}){})){}{}())){}{})){}{}){}){}){})(((((((((((((((()()){}()){}()){}){}){}()){}){}){}()){}){}){}()){}()){}()){})<>{({}[()])<>({}({})<({}({})<({}({})<({}({}))>)>)>)<>}({}<>(){[()](<{}>)}<>)

ลองออนไลน์!



1

กระแสตรง

#!/bin/dc
[[yes]P] sy [[no]P] sn [ly sp] sq [ln sp] sr [lp ss] st [ln ss] su
?  sa
119560046169484541198922343958138057249252666454948744274520813687698868044973597713429463135512055466078366508770799591124879298416357795802621986464667571278338128259356758545026669650713817588084391470449324204624551285340087267973444310321615325862852648829135607602791474437312218673178016667591286378293
la %
d 0 r 0
=q !=r
10 154 ^ 10 153 ^ +
d la r la
<t !<u
1 la 1 la
>s !>n

ลองออนไลน์!


หมายเหตุ:การส่งนี้ได้รับการแก้ไขตั้งแต่มีการส่ง การส่งดั้งเดิม (ด้านล่าง) ไม่ถูกต้องและแตกโดย Sleafar ในความคิดเห็นด้านล่าง (อินพุทของ1ก่อให้เกิดผลลัพธ์yesแต่มีอีกหนึ่งหมายเลขที่ให้ผลลัพธ์เดียวกัน)

#!/bin/dc
[[yes]P] sy [[no]P] sn [ly sp] sq [ln sp] sr
?  sa
119560046169484541198922343958138057249252666454948744274520813687698868044973597713429463135512055466078366508770799591124879298416357795802621986464667571278338128259356758545026669650713817588084391470449324204624551285340087267973444310321615325862852648829135607602791474437312218673178016667591286378293
la %
d 0 r 0
=q !=r
10 154 ^ 10 153 ^ +
d la r la
<p !<n

ลองออนไลน์!


ตัวแปลออนไลน์ส่งคืน "ใช่" สำหรับอินพุต "1" จำนวนนี้แตกหรือไม่ในตอนนี้
Sleafar

@Sleafar ถอนหายใจ ... ใช่นั่นเป็นความผิดพลาดที่โง่ในส่วนของฉัน
John Gowers

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

1

ทับทิมปลอดภัยคะแนน:

63105425988599693916

#!ruby -lnaF|
if /^#{eval [$F,0]*"**#{~/$/}+"}$/ && $_.to_i.to_s(36)=~/joe|tim/
  p true
else
  p false
end

ลองออนไลน์!

คำอธิบาย:

ตรวจสอบเงื่อนไขแรกจำนวนการป้อนข้อมูลสำหรับการหลงตัวเอง กระทู้ที่ฉันเขียนไว้ในตอนแรกถูกชนโดยบังเอิญในเวลาเดียวกันกับที่ฉันโพสต์ข้อความนี้ แต่ฉันเดาว่าไม่มีใครสังเกต ที่สองแปลงตัวเลขเป็นฐาน 36 ซึ่งใช้ตัวอักษรเป็นตัวเลขและตรวจสอบว่าสตริงมี "joe" หรือ "tim" มันสามารถพิสูจน์ได้ (จากความอ่อนเพลีย) ว่ามีเพียงตัวเลขหลงตัวเดียวที่ชื่อโจหรือทิม (โจ) เพราะตัวเลขหลงตัวเองนั้นมี จำกัด พิสูจน์ว่าพวกเขามีขอบเขต: ผลลัพธ์ของการรับหมายเลข n, การเพิ่มแต่ละหลักให้กับกำลังที่ n, และการสรุปจะถูก จำกัด โดยn*9^nในขณะที่ค่าของตัวเลข n มีขอบเขตด้านล่างโดย n ^ 10 อัตราส่วนระหว่างข้อกำหนดเหล่านี้คือ n * (9/10) ^ n ซึ่งในที่สุดจะลดลงแบบ monotonically เมื่อ n เพิ่มขึ้น เมื่อมันลดลงต่ำกว่า 1 จะไม่มีตัวเลขหลงตัวเอง n หลัก


1

PHP, ปลอดภัย, คะแนน:

60256

<?php

$a = $argv[1];

$b ='0123456789abcdefghijklmnopqrstuvwxyz';

$c = strlen($b);

$d = '';
$e = $a;
while ($e) {
    $d .= $b[$e % $c];
    $e = floor($e / $c);
}

echo ((function_exists($d) && $d($a) === '731f62943ddf6733f493a812fc7aeb7ec07d97b6') ? 1 : 0) . "\n";

ส่งออก 1 ถ้าถูกต้องมิฉะนั้นเป็น 0

แก้ไข: ฉันไม่คิดว่ามีใครพยายามที่จะถอดรหัสเพราะ

มันจะง่ายต่อการดุร้าย

คำอธิบาย:

ฉันรับอินพุตและแปลงเป็น "ฐาน 36" แต่ฉันไม่ย้อนกลับเศษที่เหลือเพื่อสร้างหมายเลขสุดท้าย หมายเลข 60256 คือ "1ahs" ในฐาน 36 Unreversed นั่นคือ "sha1" ซึ่งเป็นฟังก์ชันใน PHP การตรวจสอบครั้งสุดท้ายคือ sha1 (60256) เท่ากับแฮช



0

Python 3 คะแนน: ???

หวังว่าถ้ามีสิ่งใดแสดงให้เห็นว่าปัญหานี้แตกสลายจริง ๆ :

from hashlib import sha3_512

hash_code = 'c9738b1424731502e1910f8289c98ccaae93d2a58a74dc3658151f43af350bec' \
            'feff7a2654dcdd0d1bd6952ca39ae01f46b4260d22c1a1b0e38214fbbf5eb1fb'


def inc_string(string):
    length = len(string)
    if length == 0 or all(char == '\xFF' for char in string):
        return '\x00' * (length + 1)
    new_string = ''
    carry = True
    for i, char in enumerate(string[::-1]):
        if char == '\xFF' and carry:
            new_string = '\x00' + new_string
            carry = True
        elif carry:
            new_string = chr(ord(char) + 1) + new_string
            carry = False
        if not carry:
            new_string = string[0:~i] + new_string
            break
    return new_string


def strings():
    string = ''
    while True:
        yield string
        string = inc_string(string)


def hash_string(string):
    return sha3_512(string.encode('utf-8')).hexdigest()


def main():
    for string in strings():
        if hash_string(string) == hash_code:
            exec(string)
            break


main()

สิ่งสำคัญที่รหัสนี้ทำคือการสร้างสตริงอย่างเกียจคร้านทุกอย่างที่เป็นไปได้จนกระทั่งหนึ่งในสตริงนั้นมีแฮชที่ตรงกับhash_codeด้านบนทั้งหมด รหัส unhashed ใช้รูปแบบพื้นฐานของ:

num = int(input('Enter a number:\n'))
if num == <insert number here>:
    print(1)
else:
    print(0)

ยกเว้น<insert number here>จะถูกแทนที่ด้วยตัวเลขและมีความคิดเห็นในรหัสเพื่อวัตถุประสงค์ในการทำให้รหัสเกือบจะเดาไม่ได้

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

หวังว่าทุกคนจะไม่โกรธคำตอบของฉันฉันแค่อยากจะแสดงให้เห็นว่าทำไมตำรวจและโจรโพสต์มักจะห้ามอัลกอริธึมการแฮ็ก


อินพุตถูกนำมาจาก stdin ผลลัพธ์คือ 1 (สำหรับตัวเลขที่เดาได้อย่างถูกต้อง) หรือ 0 (สำหรับตัวเลขที่เดาไม่ถูกต้อง)
sonar235

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

3
อันที่จริงคำตอบนี้ไม่ถูกต้อง มันเกือบจะแน่นอน (ด้วยความน่าจะเป็นทางดาราศาสตร์ที่ไม่มีสตริงความยาว 512 บิตที่ตรงกับแฮช) exec () อย่างอื่นที่อาจไม่ได้เป็นรหัสไพ ธ อนที่ถูกต้องก่อนที่จะถึงรหัสที่ตั้งใจไว้
โจชัว

1
@ sonar235: เทมเพลตชิ้นส่วนของคุณมีมากกว่า 512 บิต
โจชัว

1
หากต้องการขยายคำตอบของ Joshua: โค้ดของคุณมีความยาว 102 ตัวอักษร โดยเฉพาะอย่างยิ่งโปรแกรมของคุณจะวนซ้ำทุก ๆ 100 อักขระก่อนที่มันจะเข้าสู่โค้ดของคุณ เนื่องจากรหัสของคุณวนซ้ำอักขระในช่วง 0x00-0xFF นั่นคือ256 ^ 100หรือ2 ^ 800สตริง ในขณะเดียวกันมี2 ^ 512แฮช 512 บิตที่เป็นไปได้เท่านั้น นั่นหมายความว่าสตริงที่คุณวนซ้ำมากกว่าแฮชที่เป็นไปได้อย่างน้อย2 ^ 288หนึ่งตัว - จำนวน 10,000 ครั้งมากกว่าจำนวนอะตอมในเอกภพ น่าจะเป็นของกัญชาโดยเฉพาะอย่างยิ่งที่จะไม่ได้ใช้เป็นขนาดเล็กอย่างไม่น่าเชื่อ
John Gowers

0

Python 3 , 49 ไบต์, แคร็กโดย sonar235

x = input()
print(int(x)*2 == int(x[-1]+x[0:-1]))

ลองออนไลน์!


ศูนย์ไม่ใช่จำนวนเต็มแบบโพสต์ fyi ฉันไม่รู้ว่านี่เป็นวิธีแก้ปัญหาที่ตั้งใจหรือไม่
ข้าวสาลีตัวช่วยสร้าง

0 ไม่ใช่โซลูชันที่ต้องการ
ED

8
เอ่อหน้า TIO ของคุณกำลังแสดงทางออก ...
LyricLy

2
นอกจากนี้ "เขียนโปรแกรมหรือฟังก์ชั่นที่ส่งออกหนึ่งค่าเมื่อระบุจำนวนเป็นอินพุตและค่าอื่นสำหรับอินพุตจำนวนเต็มบวกอื่น ๆทั้งหมด "
Jonathan Allan


0

Java, คะแนน: 3141592 ( แตก )

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0063\u006c\u0061\u0073\u0073\u0020\u004d\u0061\u006e\u0067\u006f\u0020\u007b
\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0076\u006f\u0069\u0064\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0029\u007b\u0066\u006f\u0072\u0028\u0063\u0068\u0061\u0072\u0020\u0063\u0020\u003a\u0020\u0073\u002e\u0074\u006f\u0043\u0068\u0061\u0072\u0041\u0072\u0072\u0061\u0079\u0028\u0029\u0029\u007b\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u0028\u0022\u005c\u005c\u0075\u0030\u0030\u0022\u002b\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u002e\u0074\u006f\u0048\u0065\u0078\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0063\u0029\u0029\u003b\u007d\u007d
\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0061\u0072\u0067\u0073\u0029\u0020\u007b\u0069\u006e\u0074\u0020\u0078\u0020\u0020\u003d\u0020\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u002e\u0070\u0061\u0072\u0073\u0065\u0049\u006e\u0074\u0028\u0061\u0072\u0067\u0073\u005b\u0030\u005d\u0029\u003b
\u0064\u006f\u0075\u0062\u006c\u0065\u0020\u0061\u003d\u0020\u0078\u002f\u0038\u002e\u002d\u0033\u0039\u0032\u0036\u0039\u0039\u003b\u0064\u006f\u0075\u0062\u006c\u0065\u0020\u0062\u0020\u003d\u0020\u004d\u0061\u0074\u0068\u002e\u006c\u006f\u0067\u0031\u0030\u0028\u0028\u0069\u006e\u0074\u0029\u0020\u0028\u0078\u002f\u004d\u0061\u0074\u0068\u002e\u0050\u0049\u002b\u0031\u0029\u0029\u002d\u0036\u003b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0028\u0061\u002f\u0062\u003d\u003d\u0061\u002f\u0062\u003f\u0022\u0046\u0061\u0069\u006c\u0022\u003a\u0022\u004f\u004b\u0022\u0020\u0029\u0029\u003b
\u007d\u007d

1
ฉันไม่คิดว่าการทำให้งงจะทำอะไรนอกจากเพิ่มขั้นตอนแรกที่น่ารำคาญ
Engineer Toast


2
@ วิศวกรไม่เลยไม่ได้จริงๆมันเป็นเรื่องที่น่ากลัวสำหรับคนที่ขี้เกียจ
user902383

0

Python 3 คะแนน 1 (ปลอดภัย)

ไม่ใช่วิธีแก้ปัญหาที่น่าสนใจ แต่เป็นตำรวจที่ปลอดภัยดีกว่าตำรวจตาย

import hashlib

def sha(x):
    return hashlib.sha256(x).digest()

x = input().encode()
original = x

for _ in range(1000000000):
    x = sha(x)

print(int(x==b'3\xdf\x11\x81\xd4\xfd\x1b\xab19\xbd\xc0\xc3|Y~}\xea83\xaf\xa5\xb4]\xae\x15wN*!\xbe\xd5' and int(original.decode())<1000))

เอาต์พุต1สำหรับหมายเลขเป้าหมายเป็น0อย่างอื่น อินพุตถูกนำมาจาก stdin ส่วนสุดท้าย ( and int(original.decode())<1000) มีอยู่เพียงเพื่อให้แน่ใจว่าคำตอบเดียวเท่านั้นมิฉะนั้นจะมีคำตอบมากมายอย่างเห็นได้ชัด


1
คุณสามารถเพิ่มลิงค์ TIO ได้ไหม
ปุย

1
สำหรับโจรอนาคต: 100000000จำนวนเต็มไม่ได้ดูเหมือนจะอยู่ในขนาดเล็กกว่า
Mr. Xcoder

1
@Shaggy มันจะหมดเวลากับ TIO มันใช้เวลาประมาณครึ่งชั่วโมงในคอมพิวเตอร์ของฉันในการรัน SHA256 ซ้ำหลายพันรายการ
L3viathan

2
โจรคนไหนที่คิดจะจัดตั้งทีมเพื่อแก้ปัญหานี้? เราเพียงแค่ต้องแบ่งตัวเลขน้อยกว่า 1,000 ขึ้นไปในหมู่พวกเราดังนั้นเราจึงมีเวลาในการคำนวณการย่อยสลายแบบวนซ้ำ - SHA ก่อนกำหนด
John Gowers

2
ถ้าคุณไม่สามารถพิสูจน์ได้ว่า1เป็นทางออกเดียวคำตอบนี้ไม่ถูกต้อง ภาระการพิสูจน์ควรอยู่ที่ผู้ที่อ้างว่ามีคำตอบที่ถูกต้อง
เดนนิส

0

C (gcc)คะแนน ???

#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <wmmintrin.h>

#include <openssl/bio.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>

union State
{
    uint8_t u8[128];
    __m128i i128[8];
} state;

void encrypt()
{
    BIO *key = BIO_new_mem_buf
    (
        "-----BEGIN PUBLIC KEY-----\n"
        "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5CBa50oQ3gOPHNt0TLxp96t+6\n"
        "i2KvOp0CedPHdJ+T/wr/ATo7Rz+K/hzC7kQvsrEcr0Zkx7Ll/0tpFxekEk/9PaDt\n"
        "wyFyEntgz8SGUl4aPJkPCgHuJhFMyUflDTywpke3KkSv3V/VjRosn+yRu5mbA/9G\n"
        "mnOvSVBFn3P2rAOTbwIDAQAB\n"
        "-----END PUBLIC KEY-----\n",
        -1
    );

    RSA *rsa = PEM_read_bio_RSA_PUBKEY(key, &rsa, NULL, NULL);

    uint8_t ciphertext[128];

    RSA_public_encrypt(128, state.u8, ciphertext, rsa, RSA_NO_PADDING);
    memcpy(state.u8, ciphertext, 128);
}

void verify()
{
    if (memcmp
    (
        "\x93\xfd\x38\xf6\x22\xf8\xaa\x2f\x7c\x74\xef\x38\x01\xec\x44\x19"
        "\x76\x56\x27\x7e\xc6\x6d\xe9\xaf\x60\x2e\x68\xc7\x62\xfd\x2a\xd8"
        "\xb7\x3c\xc9\x78\xc9\x0f\x6b\xf0\x7c\xf8\xe5\x3c\x4f\x1c\x39\x6e"
        "\xc8\xa8\x99\x91\x3b\x73\x7a\xb8\x56\xf9\x28\xe7\x2e\xb2\x82\x5c"
        "\xb8\x36\x24\xfb\x26\x96\x32\x91\xe5\xee\x9f\x98\xdf\x44\x49\x7b"
        "\xbc\x6c\xdf\xe9\xe7\xdd\x26\x37\xe5\x3c\xe7\xc0\x2d\x60\xa5\x2e"
        "\xb8\x1f\x7e\xfd\x4f\xe0\x83\x38\x20\x48\x47\x49\x78\x18\xfb\xd8"
        "\x62\xaf\x0a\xfb\x5f\x64\xd1\x3a\xfd\xaf\x4b\xaf\x93\x23\xf4\x36",
        state.u8,
        128
    ))
        exit(0);
}

static inline void quarterround(int offset)
{
    int dest = (offset + 1) % 8, src = offset % 8;

    state.i128[dest] = _mm_aesenc_si128(state.i128[src], state.i128[dest]);
}

int main(int argc, char *argv[])
{
    if (argc != 2)
        exit(0);

    uint64_t input = strtoull(argv[1], NULL, 0);

    state.i128[0] = _mm_set_epi32(0, 0, input >> 32, input);

    for (uint64_t round = 0; round < 0x1p45; round += 2)
    {
        quarterround(0);
        quarterround(2);
        quarterround(4);
        quarterround(6);

        quarterround(7);
        quarterround(1);
        quarterround(3);
        quarterround(5);
    }

    encrypt();
    verify();
    puts("something");
}

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


0

Java, 164517378918, ปลอดภัย

import java.math.*;import java.util.*;
public class T{
    static boolean f(BigInteger i){if(i.compareTo(BigInteger.valueOf(2).pow(38))>0)return false;if(i.longValue()==0)return false;if(i.compareTo(BigInteger.ONE)<0)return false;int j=i.multiply(i).hashCode();for(int k=3^3;k<2000;k+=Math.abs(j%300+1)){j+=1+(short)k+i.hashCode()%(k+1);}return i.remainder(BigInteger.valueOf(5*(125+(i.hashCode()<<11))-7)).equals(BigInteger.valueOf(0));}
    @SuppressWarnings("resource")
    public static void main(String[]a){long l=new Scanner(System.in).nextLong();boolean b=false;for(long j=1;j<10;j++){b|=f(BigInteger.valueOf(l-j));}System.out.println(f(BigInteger.valueOf(l))&&b);}
}

0

TI-BASIC คะแนน: 196164532ไม่แข่งขัน

ส่งคืน 1 สำหรับหมายเลขลับ 0 มิฉะนั้น

Ans→rand
rand=1

อ้างถึงหมายเหตุในหน้านี้ในrandคำสั่งสำหรับข้อมูลเพิ่มเติม


8
สิ่งนี้รับประกันว่าจะมีหมายเลขอินพุตที่ตรงกันหนึ่งหมายเลขใช่หรือไม่
2560

@Riker: ฉันคิดว่าเครื่องคิดเลข TI ใช้จุดลอยตัวบางอย่างภายใน ถ้า RAND ใช้จุดลอยตัวเดียวกับส่วนที่เหลือของมันฉันค่อนข้างมั่นใจว่ามันมีทางออกเดียวเท่านั้น
Joshua

@Joshua ผมเชื่อว่ามันใช้L'Ecuyer ของอัลกอริทึม
kamoroso94

@ โจชัว "ค่อนข้างแน่ใจ" ไม่เพียงพอ หากคุณไม่สามารถพิสูจน์ได้ว่ามีเพียง 1 วิธีเท่านั้นนี่ไม่ใช่คำตอบที่ถูกต้อง
Rɪᴋᴇʀ

1
@Dennis: โพรบสำหรับ 196164532 * 2; หากนั่นไม่ใช่วิธีแก้ปัญหาที่ดีกว่าไม่มีวิธีแก้ไขปัญหาอื่น
Joshua

0

Python 3คะแนน:?

def check(x):
    if x < 0 or x >= 5754820589765829850934909 or pow(x, 18446744073709551616, 5754820589765829850934909) != 2093489574700401569580277 or x % 4 != 1:
        return "No way ;-("
    return "Cool B-)"

ลองออนไลน์!

เรียบง่าย แต่อาจใช้เวลาในการเดรัจฉานกำลัง ;-) รอคอยการแตกอย่างรวดเร็ว ;-)

เชิงอรรถ: เงื่อนไขสองข้อแรกและสุดท้ายทำให้คำตอบไม่เหมือนใคร

BTW คำนวณคะแนนได้อย่างไร?

คำแนะนำ 1

คุณอาจคาดหวังว่าจะมี 2 64คำตอบภายใน0 <= x < [the 25-digit prime]แต่จริงๆแล้วมีเพียง 4 ข้อและเงื่อนไขสุดท้ายจะกำจัดอีก 3 ข้อถ้าคุณสามารถถอดรหัสได้คุณจะรู้อีก 3 โซลูชั่นด้วย



0

Acetoปลอดภัย

  P'*o*7-9JxriM'lo7*9Yxx.P',xe*ikCKxlI.D+∑\a€'#o*84/si5s:i»I9Ji8:i+∑€isi.s1+.i2\H/iQxsUxsxxsxiss*i1dJi/3d2*Ji-d*id*IILCh98*2JixM'e9hxBNRb!p

เอาท์พุท TrueFalse ถ้าถูกต้อง False เท็จเป็นอย่างอื่น

จำนวนนั้นคือ

15752963

ลองออนไลน์!


-2

C #, Mono, Linux, Alpha, คะแนน 1 (ปลอดภัย)

class Program
{
public static void Main()
{
//Excluding out-of-range inputs at ppperry's request; does not change solution
//original code:
//var bytes = System.BitConverter.GetBytes((long)int.Parse(System.Console.ReadLine()));
int i;
if (!int.TryParse(System.Console.ReadLine(), out i || i <= 0 || i > 1000000) { System.Console.WriteLine(0); Environment.Exit(0); }
var bytes = System.BitConverter.GetBytes((long)i);
using (var x = System.Security.Cryptography.HashAlgorithm.Create("MD5"))
{
    for (int i = 0; i < 1000000; ++i)
            for (int j = 0; j < 86400; ++j)
                    bytes = x.ComputeHash(bytes);
}
if (bytes[0] == 91 && bytes[1] == 163 && bytes[2] == 41 && bytes[3] == 169)
    System.Console.WriteLine(1);
else
    System.Console.WriteLine(0);
}
}

ระมัดระวัง ฉันหมายถึงมัน มีตัวจำลองอัลฟามากมายอยู่ตรงนั้น ใช้อันที่กระวนกระวายใจหรือสิ่งนี้จะไม่เสร็จ

สิ่งนี้ขึ้นอยู่กับความจริงที่ว่าอัลฟ่าเป็นผู้ยิ่งใหญ่ทำให้ System.BitConverter ทำสิ่งผิดถ้าใครบางคนลองใช้ x86 หรือ x64 ฉันเขียนคำตอบนี้เพื่อแสดงให้เห็นถึงความเลวร้ายของการท้าทายมากกว่าสิ่งอื่นใด


1
นี่ไม่สามารถมีทางออกเดียว มีจำนวนเต็มจำนวนอนันต์และฟังก์ชัน MD5 มีจำนวนผลลัพธ์ที่เป็นไปได้ที่ จำกัด ดังนั้นจึงต้องมีการชนกันของข้อมูล
pppery

@ppperry: มีเพียง 2 พันล้านเท่านั้นและเปลี่ยน ints ให้เป็นบวก
โจชัว

หากคุณคิดอย่างนั้นข้อผิดพลาดนี้ของอินพุตที่มากกว่า 2 ^ 31จึงไม่ถูกต้อง
pppery

@ppperry: ตอนนี้มันจะไม่เกิดข้อผิดพลาด
โจชัว

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