zoukankan      html  css  js  c++  java
  • 递推dp数位

    1-n里有多少个1

    #include <cstdio>
    #include <iostream>
    using namespace std;
    int main() {
    	int n=10;
    	cin >> n;
    	int f[10];
    	int x[10];
    	f[0] = 0;
    	f[1] = 1;
    	x[0] = 0;
    	x[1] = 1;
    	for (int i = 2; i < 10; i++) {
    		x[i] = x[i - 1] * 10;
    		f[i] = f[i - 1] * 10 + x[i];
    	}
    	int y = n;
    	int s = 0;
    	int k = 0;
    	int len = 0;
    	int rd[10];
    	while (y != 0) {
    		rd[len++] = y % 10;
    		y /= 10;
    	}
    	for (int i = len - 1; i >= 0; i--) {
    		if (rd[i] == 0) {
    			continue;
    		}
    		if (rd[i] == 1) {
    			s += n%x[i+1] + 1;
    		}
    		else {
    			s += x[i+1];
    		}
    		s += (rd[i]) * f[i];
    	}
    	cout << s << endl;
    }
    

    1-n里有多少包含1的数

    #include <cstdio>
    #include <iostream>
    using namespace std;
    int main() {
    	int n=10;
    	cin >> n;
    	int f[10];
    	int x[10];
    	f[0] = 0;
    	f[1] = 1;
    	x[0] = 0;
    	x[1] = 1;
    	for (int i = 2; i < 10; i++) {
    		x[i] = x[i - 1] * 10;
    		f[i] = f[i - 1] * 9 + x[i];
    	}
    	int y = n;
    	int s = 0;
    	int k = 0;
    	int len = 0;
    	int rd[10];
    	while (y != 0) {
    		rd[len++] = y % 10;
    		y /= 10;
    	}
    	for (int i = len - 1; i >= 0; i--) {
    		if (rd[i] == 0) {
    			continue;
    		}
    		if (rd[i] == 1) {
    			s += n%x[i+1] + 1;
    			s += f[i];
    			break;
    		}
    		else {
    			s += x[i+1];
    			s += (rd[i]-1) * f[i];
    		}
    		
    	}
    	cout << s << endl;
    }
    
  • 相关阅读:
    python 函数嵌套
    python 函数对象
    python 函数参数
    python 连接MySQL报错及解决方案
    解决 No module named pip
    python 文件处理
    python
    python 元祖
    python 读取域名信息
    ubuntu 配置网卡,DNS, iptables
  • 原文地址:https://www.cnblogs.com/HaibaraAi/p/6399771.html
Copyright © 2011-2022 走看看