java水过
高精度+递推
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; public class Main { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BigInteger[] f = new BigInteger[2500]; BigInteger[] s = new BigInteger[2500]; int c[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 }; for (int i = 1; i <= 2000; i++) { f[i] = new BigInteger("0"); } f[0] = new BigInteger("1"); for (int i = 0; i <= 2000; i++) { for (int j = 0; j < 10; j++) { if (i == 0 && j == 0) continue; if (i + c[j] <= 2000) { f[i + c[j]] = f[i + c[j]].add(f[i]); } } } f[0] = new BigInteger("0"); s[0] = f[0]; for (int i = 1; i <= 2000; i++) { s[i] = s[i - 1].add(f[i]); } BufferedReader cin = new BufferedReader( new InputStreamReader(System.in)); while (true) { String m = cin.readLine(); if (m == null) break; int n = Integer.parseInt(m); if (n >= 6) { System.out.println(s[n].add(new BigInteger("1"))); } else { System.out.println(s[n]); } } } }