51 nod 最小1的数量 数位DP
来源:互联网 发布:如何制作淘宝图片 编辑:程序博客网 时间:2024/06/11 18:02
题目:https://cn.vjudge.net/contest/178832#problem/C
输入1个整数n,计算从1到n各个位上1出现的次数。
思路:如果暴力,肯定是会超时的。所以要从数位上找规律。221看10位上出现1的情况,10- 19,110-119,210-219.
假如212,十位上10 19,110-119,210-212由百位和各位决定。再举些例子便可以发现,3221,十位上 10-19,110-119,210-219.。。1110-1119,1210-1219.。。。3210-3219.
pre*10+af+1;n>2时。(pre+1)*10,n==0,pre*10.
#include<iostream>using namespace std;int solve(int n){int i = 1, cur, be, af,ans=0;while (n / i){cur = n / i % 10;//当前位的数字be = n / (i * 10);该位之前的数字af = n - n / i*i;if (cur > 1)ans += (be + 1) * i;else if (cur < 1)ans += be * i;elseans += be * i + af + 1;i = i * 10;}return ans;} int main() { int n; while (cin >> n) { cout << solve(n) << endl; } return 0; }
阅读全文
0 0
- 51 nod 最小1的数量 数位DP
- 51Nod 1009 数字1的数量(数位dp)
- 51nod 1009 数字1的数量(数位dp)
- 51nod 数字1的数量(数位DP)
- 51nod 1009 数字1的数量(数位dp)
- 51nod 1009 数字1的数量(数位dp)
- 51nod 1009 数字1的数量【数位dp】
- 【51nod 1009】数字1的数量 【数位DP 模板】
- 数位dp 总结 51nod数字1的数量 数字0-9的数量
- 51nod 1042 数字0-9的数量 数位DP
- 51nod数字0-9的数量(数位dp)
- 51NOD 1042 数字0-9的数量 数位DP
- 51nod 1042 数字0-9的数量(数位dp)
- 51nod 1042 数字0-9的数量【数位dp】
- 51Nod 1042 数字0-9的数量 (数位DP
- 51Nod 数字0到9的数量 (数位DP)
- 51nod 1042 数字0-9的数量 数位DP
- 51nod:数字1的数量(线性dp or 数位dp)
- JZOJ 5354. 【NOIP2017提高A组模拟9.9】导弹拦截
- AJAX实现异步刷新
- ScrollView
- Retrofit2源码的阅读
- Java实现快速排序算法
- 51 nod 最小1的数量 数位DP
- Android Studio找不到真机设备
- ArrayList的扩容
- 棋盘问题(POJ1321)
- 22. Generate Parentheses
- 中位数计数
- css3不完全兼容性
- 字节数组流,文件流,数据流,转换流
- ios输入汉字时出现空格