#13601: 解題心得


a0970580085@gmail.com (/)

School : 義守大學
ID : 74647
IP address : [124.218.141.4]
Last Login :
2020-05-18 20:34:38
b897. 10219 - Find the ways ! -- UVa 10219 | From: [111.254.214.128] | Post Date : 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 (張晁瑋)

School : 新北市立板橋高級中學
ID : 2629
IP address : [27.53.144.178]
Last Login :
2021-08-27 08:40:56
b897. 10219 - Find the ways ! -- UVa 10219 | From: [60.248.142.208] | Post Date : 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 (小貓貓)

School : 國立交通大學
ID : 67311
IP address : [49.159.0.48]
Last Login :
2021-08-25 11:46:11
b897. 10219 - Find the ways ! -- UVa 10219 | From: [36.226.45.17] | Post Date : 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 (/)

School : 義守大學
ID : 74647
IP address : [124.218.141.4]
Last Login :
2020-05-18 20:34:38
b897. 10219 - Find the ways ! -- UVa 10219 | From: [111.254.195.253] | Post Date : 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