13 November
2024-09-02 17:44:58
[HEOI2015] 定价
BZOJ 4027: 在市场上有很多商品的定价类似于 999 元、4999 元、8999 元这样。它们和 1000 元、5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商家常用的价格策略。不过在你看来,这种价格十分荒谬。于是你如此计算一个价格 p(p 为正整数)的荒谬程度:
1、首先将 p 看做一个由数字组成的字符串(不带前导 0);
2、然后,如果 p 的最后一个字符是 0,就去掉它。重复这一过程,直到 p 的最后一个字符不是 0;
3、记 p 的长度为 a,如果此时 p 的最后一位是 5,则荒谬程度为 2 * a - 1;否则为 2 * a。例如,850 的荒谬程度为 3,而 880 则为 4,9999 的荒谬程度为 8。
现在,你要出售一样闲置物品,你能接受的定价在 [L, R] 范围内,你想要给出一个荒谬度最低的价格。T ≤ 100,1 ≤ L ≤ R ≤ 10^9.
贪心。
#include <cstdio>
#include <cstring>
int T, L, R;
int ans;
inline int calc(int x) {
while (!(x%10)) x/=10;
register int k=x%10, a=0;
while (x) x/=10, ++a;
if (k==5) return (a<<1)-1; return a<<1;
}
inline int add(int x) {
register int k=1;
while (!(x%10)) x/=10, k*=10;
return k;
}
int main() {
for (scanf("%d", &T); T; --T) {
scanf("%d%d", &L, &R);
ans=L;
register int p=0x3f3f3f3f, q;
while (L<=R) {
q=calc(L);
if (p>q) p=q, ans=L;
L+=add(L);
}
printf("%d\n", ans);
}
return 0;
}
最新文章
- jQuery Colorbox弹窗插件使用教程小结、属性设置详解
- Rdseed与SAC的安装
- SVN和CVS的区别
- Win10专业版激活方法可查版本
- 在项目中代替DevExpress(一)
- JAVA GC 简单总结
- poj 1114 完全背包 dp
- 用sql的select语句从数据库中获取数据
- iOS中CollectionView由于多次点击造成错误的解决方案
- JBPM数据库表说明
- MySQL存储过程实例
- 监控redis进程,如果没有自动重启
- 计科1702冯亚杰C语言程序设计预备作业
- RabbitMQ In JAVA 介绍及使用
- PHP中的常用数组操作方法
- SQL Server数据库开发的二十一条军规
- 如何系统的学习Java
- .NET默认一个客户端对同一个服务器地址同时只能建立2个TCP连接
- CSS3知识!
- 电脑一直报PCIE BUS错误的原因