#13601: 解題心得


a0970580085@gmail.com (/)

學校 : 義守大學
編號 : 74647
來源 : [125.229.235.114]
最後登入時間 :
2023-08-30 17:36:04
b897. 10219 - Find the ways ! -- UVa 10219 | From: [111.254.214.128] | 發表日期 : 2018-03-29 00:07

善用Log來取位數(以10為底)

別把數字乘出來再來取位數

 

 

 

 

 

 

 

 

 

小提示:log(A*B)=logA+logB

            log(A/B)=logA-logB

 

 

 

 

 

 

 

 

小技巧:    10!

 

             5! * 5!

=   10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2

       5 * 4 * 3 * 2    *    5 * 4 * 3 * 2

=>Log(10)+Log(9)+Log(8)+Log(7)+Log(6)-Log(5)-Log(4)-Log(3)-Log(2)

=>2.4XXXXXX

=>3位數

 
#14209: Re:解題心得


buanyz03 (張晁瑋)

學校 : 新北市立板橋高級中學
編號 : 2629
來源 : [114.25.190.198]
最後登入時間 :
2023-09-06 15:43:50
b897. 10219 - Find the ways ! -- UVa 10219 | From: [60.248.142.208] | 發表日期 : 2018-06-28 15:46

善用Log來取位數(以10為底)

別把數字乘出來再來取位數

 

 

 

 

 

 

 

 

 

小提示:log(A*B)=logA+logB

            log(A/B)=logA-logB

 

 

 

 

 

 

 

 

小技巧:    10!

 

             5! * 5!

=   10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2

       5 * 4 * 3 * 2    *    5 * 4 * 3 * 2

=>Log(10)+Log(9)+Log(8)+Log(7)+Log(6)-Log(5)-Log(4)-Log(3)-Log(2)

=>2.4XXXXXX

=>3位數


用同樣的方法 可是TLE了

 
#14210: Re:解題心得


james.liu841@gmail.com (小貓貓)

學校 : 國立交通大學
編號 : 67311
來源 : [140.113.127.204]
最後登入時間 :
2023-06-17 16:51:41
b897. 10219 - Find the ways ! -- UVa 10219 | From: [36.226.45.17] | 發表日期 : 2018-06-28 17:11

善用Log來取位數(以10為底)

別把數字乘出來再來取位數

 

 

 

 

 

 

 

 

 

小提示:log(A*B)=logA+logB

            log(A/B)=logA-logB

 

 

 

 

 

 

 

 

小技巧:    10!

 

             5! * 5!

=   10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2

       5 * 4 * 3 * 2    *    5 * 4 * 3 * 2

=>Log(10)+Log(9)+Log(8)+Log(7)+Log(6)-Log(5)-Log(4)-Log(3)-Log(2)

=>2.4XXXXXX

=>3位數


用同樣的方法 可是TLE了

C 10取2 等於 C 10取8

找計算少的那個算

前者 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 / 8 / 7 / 6 / 5 / 4 / 3 / 2

後者 10 * 9 / 2

 

 
#14215: Re:解題心得


a0970580085@gmail.com (/)

學校 : 義守大學
編號 : 74647
來源 : [125.229.235.114]
最後登入時間 :
2023-08-30 17:36:04
b897. 10219 - Find the ways ! -- UVa 10219 | From: [111.254.195.253] | 發表日期 : 2018-06-29 23:36

善用Log來取位數(以10為底)

別把數字乘出來再來取位數

 

 

 

 

 

 

 

 

 

小提示:log(A*B)=logA+logB

            log(A/B)=logA-logB

 

 

 

 

 

 

 

 

小技巧:    10!

 

             5! * 5!

=   10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2

       5 * 4 * 3 * 2    *    5 * 4 * 3 * 2

=>Log(10)+Log(9)+Log(8)+Log(7)+Log(6)-Log(5)-Log(4)-Log(3)-Log(2)

=>2.4XXXXXX

=>3位數


用同樣的方法 可是TLE了

 

public static long combination(long n, long k) {
		double result = 0;

		for (long i = n; i > Math.max(n - k, k); --i) {
			result += Math.log10(i);
		}

		for (long j = Math.min(n - k, k); j > 1; --j) {
			result -= Math.log10(j);
		}

		return (long) (result + 1);
	}

 

 
ZeroJudge Forum