0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Project Euler】#013

Posted at

13問目です!

問題

Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.

$37107287533902102798797998220837590246510135740250$
$46376937677490009712648124896970078050417018260538$
$74324986199524741059474233309513058123726617309629$
$91942213363574161572522430563301811072406154908250$
$23067588207539346171171980310421047513778063246676$
$89261670696623633820136378418383684178734361726757$
$28112879812849979408065481931592621691275889832738$
$44274228917432520321923589422876796487670272189318$
$47451445736001306439091167216856844588711603153276$
$70386486105843025439939619828917593665686757934951$
$62176457141856560629502157223196586755079324193331$
$64906352462741904929101432445813822663347944758178$
$92575867718337217661963751590579239728245598838407$
$58203565325359399008402633568948830189458628227828$
$80181199384826282014278194139940567587151170094390$
$35398664372827112653829987240784473053190104293586$
$86515506006295864861532075273371959191420517255829$
$71693888707715466499115593487603532921714970056938$
$54370070576826684624621495650076471787294438377604$
$53282654108756828443191190634694037855217779295145$
$36123272525000296071075082563815656710885258350721$
$45876576172410976447339110607218265236877223636045$
$17423706905851860660448207621209813287860733969412$
$81142660418086830619328460811191061556940512689692$
$51934325451728388641918047049293215058642563049483$
$62467221648435076201727918039944693004732956340691$
$15732444386908125794514089057706229429197107928209$
$55037687525678773091862540744969844508330393682126$
$18336384825330154686196124348767681297534375946515$
$80386287592878490201521685554828717201219257766954$
$78182833757993103614740356856449095527097864797581$
$16726320100436897842553539920931837441497806860984$
$48403098129077791799088218795327364475675590848030$
$87086987551392711854517078544161852424320693150332$
$59959406895756536782107074926966537676326235447210$
$69793950679652694742597709739166693763042633987085$
$41052684708299085211399427365734116182760315001271$
$65378607361501080857009149939512557028198746004375$
$35829035317434717326932123578154982629742552737307$
$94953759765105305946966067683156574377167401875275$
$88902802571733229619176668713819931811048770190271$
$25267680276078003013678680992525463401061632866526$
$36270218540497705585629946580636237993140746255962$
$24074486908231174977792365466257246923322810917141$
$91430288197103288597806669760892938638285025333403$
$34413065578016127815921815005561868836468420090470$
$23053081172816430487623791969842487255036638784583$
$11487696932154902810424020138335124462181441773470$
$63783299490636259666498587618221225225512486764533$
$67720186971698544312419572409913959008952310058822$
$95548255300263520781532296796249481641953868218774$
$76085327132285723110424803456124867697064507995236$
$37774242535411291684276865538926205024910326572967$
$23701913275725675285653248258265463092207058596522$
$29798860272258331913126375147341994889534765745501$
$18495701454879288984856827726077713721403798879715$
$38298203783031473527721580348144513491373226651381$
$34829543829199918180278916522431027392251122869539$
$40957953066405232632538044100059654939159879593635$
$29746152185502371307642255121183693803580388584903$
$41698116222072977186158236678424689157993532961922$
$62467957194401269043877107275048102390895523597457$
$23189706772547915061505504953922979530901129967519$
$86188088225875314529584099251203829009407770775672$
$11306739708304724483816533873502340845647058077308$
$82959174767140363198008187129011875491310547126581$
$97623331044818386269515456334926366572897563400500$
$42846280183517070527831839425882145521227251250327$
$55121603546981200581762165212827652751691296897789$
$32238195734329339946437501907836945765883352399886$
$75506164965184775180738168837861091527357929701337$
$62177842752192623401942399639168044983993173312731$
$32924185707147349566916674687634660915035914677504$
$99518671430235219628894890102423325116913619626622$
$73267460800591547471830798392868535206946944540724$
$76841822524674417161514036427982273348055556214818$
$97142617910342598647204516893989422179826088076852$
$87783646182799346313767754307809363333018982642090$
$10848802521674670883215120185883543223812876952786$
$71329612474782464538636993009049310363619763878039$
$62184073572399794223406235393808339651327408011116$
$66627891981488087797941876876144230030984490851411$
$60661826293682836764744779239180335110989069790714$
$85786944089552990653640447425576083659976645795096$
$66024396409905389607120198219976047599490197230297$
$64913982680032973156037120041377903785566085089252$
$16730939319872750275468906903707539413042652315011$
$94809377245048795150954100921645863754710598436791$
$78639167021187492431995700641917969777599028300699$
$15368713711936614952811305876380278410754449733078$
$40789923115535562561142322423255033685442488917353$
$44889911501440648020369068063960672322193204149535$
$41503128880339536053299340368006977710650566631954$
$81234880673210146739058568557934581403627822703280$
$82616570773948327592232845941706525094512325230608$
$22918802058777319719839450180888072429661980811197$
$77158542502016545090413245809786882778948721859617$
$72107838435069186155435662884062257473692284509516$
$20849603980134001723930671666823555245252804609722$
$53503534226472524250874054075591789781264330331690$

わたしの回答

func solve() {
	targetSplit := strings.Split(TARGET, "<br>")

	result := big.NewInt(0)
	for _, num := range targetSplit {
		n := big.NewInt(0)
		n.SetString(num, 10)
		result = big.NewInt(0).Add(result, n)
	}
	// 最初の10桁をログ出力
	fmt.Println(result.Text(10)[:10])
}

GPT-4.1の回答

func solve() {
	// 合計を格納するbig.Int変数
	sum := big.NewInt(0)

	// 改行で分割し、各行を加算
	for _, line := range strings.Split(TARGET, "\n") {
		line = strings.TrimSpace(line)
		if line == "" {
			continue
		}
		n := new(big.Int)
		n.SetString(line, 10)
		sum.Add(sum, n)
	}

	// 合計値の文字列から先頭10桁を取り出す
	sumStr := sum.String()
	fmt.Println("合計の先頭10桁:", sumStr[:10])
}

ベンチマーク

計測 実行回数 (b.N) 平均実行時間 (ns/op)
わたしの回答 23,734 51,013 ns/op
GPT4.1 884,731 1,333 ns/op
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?