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]);
}
}
}
}