HDU-3723-DeltaWave
2014-07-13 10:17
260 查看
/*这道题也是卡特兰数的一个很好的练习
<pre name="code" class="java">T[k]是存在<span style="font-family: Arial, Helvetica, sans-serif;">k对上下时解的个数,T[k] = C(n, 2 * k) * CAT[k] (CAT[k]是卡特兰数第k项,0 <= k <= n / 2)</span>
<span style="font-family: Arial, Helvetica, sans-serif;">ans = T[0] + T[1] + ...+T[n/2]</span>
<span style="font-family: Arial, Helvetica, sans-serif;">T[k] / T[k-1] = (n - 2k + 2) * (n - 2k + 1) / (k * (k + 1))</span>
*/
import java.math.BigInteger; import java.util.Scanner; /* * hdu 3723 Delta Wave * slowlight * 2014-7-13 * 卡特兰数 H(n) = H(0)*H(n-1)+H(1)*H(n-2)...+H(n-1)*H(0) = C(2n, n)/(n + 1) */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); BigInteger mod = BigInteger.TEN.pow(100); BigInteger sum; BigInteger t; while(scanner.hasNext()) { int n = scanner.nextInt(); //System.out.println("n= " + String.valueOf(n)); int limi = n / 2; sum = BigInteger.ONE; t = BigInteger.ONE; for (int k=1;k <= limi;++k) { t = t.multiply( BigInteger.valueOf( (n - 2 * k + 1) * (n - 2 * k + 2) )) .divide(BigInteger.valueOf(k * (k + 1))); //System.out.println("k= " + String.valueOf(k)); //System.out.println("t= " + String.valueOf(t)); sum = sum.add(t); } //System.out.println("sum=" + sum); System.out.println(sum.mod(mod)); } scanner.close(); } }
相关文章推荐
- hdu 3723 Delta Wave(卡特兰数)
- HDU 3723卡特兰数
- HDU 3723 Delta Wave(默慈金数)
- LA 5092 && hdu 3723 Delta Wave (卡特兰数)
- HDU 3723 Delta Wave (高精度+calelan数)
- HDU 3723
- hdu 3723 Delta Wave 从(0,0)到(n,0)每次向右(上,下)的种类数
- HDU 3723 Delta Wave(卡特兰数+大数)
- HDU 3723 Delta Wave(组合计数,卡特兰数)
- HDU 3723
- hdu 3723 Delta Wave
- HDU 3723 Delta Wave(卡特兰数)
- hdu 3723 Delta Wave
- HDU-1030-DeltaWave
- HDU 3723 Delta Wave
- Catalan数-hdu-3723-Delta Wave
- HDU-3723 Delta Wave(卡特兰数+大数递推)
- HDU 3723 Delta Wave(2010 Asia Tianjin Regional Contest )
- HDU 3723 Delta Wave
- HDU 1142 A Walk Through the Forest