题目1373:整数中1出现的次数(从1到n整数中1出现的次数) 数位DP
来源:互联网 发布:算边坡稳定性的软件 编辑:程序博客网 时间:2024/05/16 16:18
import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.Arrays;import java.util.StringTokenizer;public class Main { public static void main(String[] args) { new Task().solve() ; }}class Task{InputReader in = new InputReader(System.in) ;PrintWriter out = new PrintWriter(System.out) ;long[][] dp = new long[11][10] ;int[] bit = new int[11] ; long DP(int pos , int oneSum , boolean isend){if(pos < 0){return oneSum ;}if(! isend && dp[pos][oneSum] != -1) return dp[pos][oneSum] ;long sum = 0L ;int d = isend ? bit[pos] : 9 ;for(int i = 0 ; i <= d ; i++){sum += DP(pos-1 , oneSum + ( i == 1 ? 1 : 0) , isend && (i == d)) ;}if(! isend) dp[pos][oneSum] = sum ;return sum ;}long sum(long n){if(n <= 0) return 0L ;int pos = 0 ;while(n > 0){bit[pos++] = (int) ( n% 10) ;n /= 10 ;}return DP(pos-1 , 0 , true) ;}void solve(){for(int i = 0 ; i <= 10 ; i++) Arrays.fill(dp[i] , -1L) ;while(in.hasNext()){long l = in.nextLong() ;long r = in.nextLong() ;if(l > r){long t = l ;l = r ;r = t ;}out.println(sum(r) - sum(l-1));//out.flush();}out.flush();}}class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream) { reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = new StringTokenizer(""); } private void eat(String s) { tokenizer = new StringTokenizer(s); } public String nextLine() { try { return reader.readLine(); } catch (Exception e) { return null; } } public boolean hasNext() { while (!tokenizer.hasMoreTokens()) { String s = nextLine(); if (s == null) return false; eat(s); } return true; } public String next() { hasNext(); return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public long nextLong() { return Long.parseLong(next()); } public double nextDouble() { return Double.parseDouble(next()); } public BigInteger nextBigInteger() { return new BigInteger(next()); } }
0 0
- 题目1373:整数中1出现的次数(从1到n整数中1出现的次数) 数位DP
- 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
- 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
- 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
- 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
- 整数中1出现的次数(从1到n整数中1出现的次数)
- JD 1373:整数中1出现的次数(从1到n整数中1出现的次数)
- 整数中1出现的次数(从1到n中出现的次数)
- 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)-九度
- 【九度】题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
- [九度oj]题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
- 九度OJ-题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- 从1到n整数中1出现的次数
- java取余运算时,用等于0和等于1有什么不同?
- Python学习笔记之函数作为返回值、闭包的解释
- 转:设计模式六大原则
- 素数问题:Torry的困惑(基本型)
- 前台框架选择
- 题目1373:整数中1出现的次数(从1到n整数中1出现的次数) 数位DP
- Android OpenCV Camera preview 横屏以及不全屏的问题
- PAT-B 1019. 数字黑洞 (20)
- sun黑科技之动态添加jvm参数
- Android设置在代码中设置沉浸式布局
- Android直播解决方案
- 链表 C语言实现
- JSON
- jsessionid的简单说明