zoukankan      html  css  js  c++  java
  • 不要62 HDU

    //f[i,j]一共有i位数字,且最高位是j,而且不包括4和64的数的个数
    //f[i-1,k] 表示次高位为k
    //如果合法,那么需要满足 j、k都不为4   jk不是62
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    const int N = 35;
    int f[N][10];
    void init() {
    	//处理一位的数字 
    	for (int i = 0; i <= 9; i ++ )
    		if (i != 4) 
    			f[1][i] = 1;
    	//处理两位数及以上的的数字
    	for (int i = 1; i < N; i ++ )
    		//最高位
    		for (int j = 0; j <= 9; j ++ ) { 
    			//次高位 
    			for (int k = 0; k <= 9; k ++ ) { 
    				if (k == 4 || j == 6 && k == 2) 
    					continue;
    				f[i][j] += f[i - 1][k];
    			}
    		}
    }
    int dp(int n) {
    	if (!n) return 1;
    	vector<int> nums;
    	while (n) 
    		nums.push_back(n % 10), n /= 10;
    	int res = 0;
    	int last = 0;//存上一位多少
    	for (int i = nums.size() - 1; i >= 0; i -- ) {
    		int x = nums[i];
    		for (int j = 0; j < x; j ++ ) {
    			if (j == 4 || last == 6 && j == 2) 
    				continue;
    			//从0到第i位一共i+1位 
    			res += f[i + 1][j];
    		}
    		if (x == 4 || last == 6 && x == 2) 
    			break;
    		last = x;
    		if (!i) 
    			res ++ ;
    	}
    	return res;
    }
    int main() {
    	init();
    	int l, r;
    	while (cin >> l >> r, l || r) {
    		cout << dp(r) - dp(l - 1) << endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    hbase 简介
    Hadoop本地库介绍
    MapReduce:详解Shuffle过程
    eucalyptus,openstack
    openstack installing...
    今年2011
    wget代理设置(转载)
    openstack running
    python 升级到2.6(转载)
    高德地图Windowphone API学习地图定位与地图模式的切换
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12497427.html
Copyright © 2011-2022 走看看