poj3286
来源:互联网 发布:java面试笔试题 编辑:程序博客网 时间:2024/05/17 22:16
又发现中级水题一枚。。高中貌似老师讲过?
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define LL long long
LL radix[15], n, m;
LL cal(LL x)
{
if (x<0) return 0;
LL sum = 1;
for (int i = 1; ; i++)
{
if (radix[i]>x) break;
LL front = x / radix[i];
LL back = x % radix[i - 1];
LL now = (x % radix[i] - x % radix[i - 1]) / radix[i - 1];
if (now == 0) sum += (front - 1) * radix[i - 1] + back + 1;
else sum += front * radix[i - 1];
}
return sum;
}
int main()
{
radix[0] = 1;
for (int i = 1; i < 15; i++) radix[i] = radix[i - 1] * 10;
while (cin >> m >> n &&(m != -1 || n != -1))
{
cout << cal(n) - cal(m - 1) << endl;
}
return 0;
}
#include <cstring>
#include <iostream>
using namespace std;
#define LL long long
LL radix[15], n, m;
LL cal(LL x)
{
if (x<0) return 0;
LL sum = 1;
for (int i = 1; ; i++)
{
if (radix[i]>x) break;
LL front = x / radix[i];
LL back = x % radix[i - 1];
LL now = (x % radix[i] - x % radix[i - 1]) / radix[i - 1];
if (now == 0) sum += (front - 1) * radix[i - 1] + back + 1;
else sum += front * radix[i - 1];
}
return sum;
}
int main()
{
radix[0] = 1;
for (int i = 1; i < 15; i++) radix[i] = radix[i - 1] * 10;
while (cin >> m >> n &&(m != -1 || n != -1))
{
cout << cal(n) - cal(m - 1) << endl;
}
return 0;
}
- poj3286
- poj3286
- POJ2282&&POJ3286
- poj3286 数位dp
- poj2282 poj3286 数位递归
- poj3286(组合数学,数位dp)
- POJ3286 How many 0's?
- poj3286 How many 0's?
- POJ3286:How many 0's?(数位DP)
- 数位dp poj3286 How many 0's?
- poj3286--How many 0's?(数位dp)
- poj3286 How many 0's? (数位DP)
- codeforces 353D.Queue
- WPF 创建多行TextBox
- java定时器
- 将CString的字符串写入文件
- [算法导论][排序算法]快速排序(quick sort)
- poj3286
- 客户的一些问题
- 让myeclipse默认以文本编辑器的方式打开jsp文件
- Ubuntu 12.04 启动时环境变量加载顺序(脚本调用顺序)
- InputStream.read(byte[] b,int off,int len)
- C++中将string类型转换为int, float, double类型
- 请教大神Java web的异常
- UML类图画法全程解析
- poi 读取excel 文件