project euler 113

对于1个数字,如果他数位不减或者不增称为bouncy number,比如1233,33210。统计1~10^100中的bouncy number
 
思路:分为两种计算

1.这个数中只出现了一个数字,那么对于i位的数字有9种,故总计有9 * 100种

2.这个数中至少出现两个数字,分别按位数计算不减的数和不增的数
以不减的数为例,枚举首数字j和尾数字k(j < k),
j = a1 <= a2 <= a3 <= a4 <= a5 <= … <= am = k
令x1 = a2 - a1,x2 = a3 - a2, x3 = a4 - a3, …, xm - 1 = am - am-1。
x1 + x2 + x3 + … + xm-1 = k - j 解不定方程的解,C(k - j + m - 2, k - j)
不增的数同理
import java.util.*;
import java.io.*;
import java.math.BigDecimal;
import java.math.BigInteger; public class Main {
BigInteger bi(int x) {
return BigInteger.valueOf(x);
}
BigInteger comb(int n, int m) {
BigInteger ret = bi(1);
for (int i = n; i >= n - m + 1; -- i) ret = ret.multiply(bi(i));
for (int i = 1; i <= m; ++ i) ret = ret.divide(bi(i));
return ret;
}
void solve() {
int n = 100;
BigInteger ans = bi(9 * n);
for (int i = 2; i <= n; ++ i) {
for (int j = 1; j <= 8; ++ j)
for (int k = j + 1; k <= 9; ++ k) {
ans = ans.add(comb(k - j + i - 2, k - j));
}
}
for (int i = 2; i <= n; ++ i) {
for (int j = 1; j <= 9; ++ j)
for (int k = 0; k <= j - 1; ++ k) {
ans = ans.add(comb(j - k + i - 2, j - k));
}
}
System.out.println(ans);
}
FastScanner cin;
PrintWriter out;
void run() {
cin = new FastScanner();
out = new PrintWriter(System.out);
solve();
out.flush();
}
class FastScanner {
BufferedReader br;
StringTokenizer st;
boolean hasNext; public FastScanner() {
br = new BufferedReader(new InputStreamReader(System.in));
hasNext = true;
} // public FastScanner(String s) {
// try {
// br = new BufferedReader(new FileReader(s));
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// hasNext = true;
// } public String nextToken() {
while (st == null || !st.hasMoreTokens()) {
try {
st = new StringTokenizer(br.readLine());
} catch (Exception e) {
hasNext = false;
return "##";
}
}
return st.nextToken();
}
String next = null;
public boolean hasNext() {
next = nextToken();
return hasNext;
}
public int nextInt() {
if (next == null) next = nextToken();
String more = next;
next = null;
return Integer.parseInt(more);
}
public long nextLong() {
return Long.parseLong(nextToken());
} public double nextDouble() {
return Double.parseDouble(nextToken());
}
}
public static void main(String[] args) {
new Main().run();
}
}

project euler113的更多相关文章

  1. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  2. 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file

    我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...

  3. ASP.NET Core project.json imports 是什么意思?

    示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...

  4. PhpStorm和WAMP配置调试参数,问题描述Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration.

    PhpStorm和WAMP配置调试参数 问题描述: Error. Interpreter is not specified or invalid. Press “Fix” to edit your p ...

  5. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  6. CSharpGL(20)用unProject和Project实现鼠标拖拽图元

    CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...

  7. Microsoft Visual Studio 2013 — Project搭载IIS配置的那些事

    前段时间在改Bug打开一个project时,发生了一件奇怪的事,好好的一直不能加载solution底下的这个project,错误如下图所示:大致的意思就是这个project的web server被配置 ...

  8. My First Android Application Project 第一个安卓应用

    一.前言: 安卓(Android):是一种基于Linux的自由及开放源代码的操作系统,主要用在移动设备上,如手机.平板电脑.其他的设备也有使用安卓操作系统,比如:电视机,游戏机.数码相机等等. 二.具 ...

  9. ASP.NET Core中的project.json何去何从?

    Shawn Wildermuth (https://wildermuth.com/2016/05/12/The-Future-of-project-json-in-ASP-NET-Core) If y ...

随机推荐

  1. centos6.5下安装jdk并配置环境变量

    链接: https://blog.csdn.net/wawawawawawaa/article/details/81158943 以下链接供参考: https://blog.csdn.net/Bugg ...

  2. ZooKeeper分布式过程协同技术详解2——了解ZooKeeper

    这个服务如何实现这些协作方面的原语? ZooKeeper基础

  3. SE91 SAP消息类型

    SE91 SAP消息类型 E:Error W:Warning I  :Information A :Abortion S :Success 标准 : MESSAGE ID sy-msgid TYPE  ...

  4. HDU 4318 Power transmission(最短路)

    http://acm.hdu.edu.cn/showproblem.php?pid=4318 题意: 给出运输路线,每条路线运输时都会损失一定百分比的量,给定起点.终点和初始运输量,问最后到达终点时最 ...

  5. JavaScript中 call和apply

    call()方法和apply()方法的作用相同,他们的区别在于接收参数的方式不同. 对于call(),第一个参数是this值没有变化,变化的是其余参数都直接传递给函数.(在使用call()方法时,传递 ...

  6. 【BZOJ】3144: [Hnoi2013]切糕

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3144 MDZZ,不知道为什么被卡常数了/TAT(特判才过去的....论vector的危害性 ...

  7. LCA 模板

    关于LCA: LCA 指树上两点的公共祖先. 如何 “暴力” 找两点的 LCA : 可以先 DFS 一遍求出每个点的 dep (深度).然后从深度大的点先往上跳,跳到与另一个点相同的深度,如果还没有到 ...

  8. python 传递多个参数

    def oper(a,*args): print(args) print(a) oper("q","s","d","z" ...

  9. 分散的配置文件VS集中的注册表

    假设有这样一个工程,是这样设计的: 1整个软件.服务被切分为 由若干独立的多道程序(多个进程/微服务): 2 这些多道程序只是“机制mechanism”,而“策略strategy”写在各自用到的配置文 ...

  10. CSS 控制鼠标在元素停留的样式

    以下资料来自网络,收藏学习总结用: 有时候需要改变鼠标样式,DIV 可以改成手型等,A也可以改成光标形式 巧合要用到鼠标样式效果,就顺便整理了下十五种CSS鼠标样式,小例子供大家使用啊.CSS鼠标样式 ...