[HEOI2015]定价

Posted adelalove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[HEOI2015]定价相关的知识,希望对你有一定的参考价值。

题目描述

在市场上有很多商品的定价类似于 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,表示测试数据的数目。

每个测试数据占单独的一行,包含两个空格分隔的正整数 L, R,表示定价的区间。

 

输出格式:

 

对于每个测试数据,在单独的一行内输出结果。如果荒谬度最低的价格不唯一,输出最小的那个。

 

输入输出样例

输入样例#1:
3
998 1002
998 2002
4000 6000
输出样例#1:
1000
1000
5000

说明

对于 20% 的数据,L, R ≤ 2000.

对于 100% 的数据,T ≤ 100,1 ≤ L ≤ R ≤ 10^9.

暴力:20分

正解:

对于区间内的数字,一定是末尾0越多越好,去掉0之后尽可能是5,eg,5000,50000........

所以对于相应数字,可以在枚举的时候加上末尾0的个数的相应数字,减少枚举量。

eg:1900->1900+100->2000

也算是投机取巧?

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<queue>
 5 #include<algorithm>
 6 #include<cstring>
 7 #define inf 2147483600
 8 #define Rr register
 9 #include<string>
10 using namespace std;
11 inline int read()
12 {
13     int x=0,w=1;char ch=getchar();
14     while(!isdigit(ch)){if(ch==-) w=-1;ch=getchar();}
15     while(isdigit(ch)) x=(x<<3)+(x<<1)+ch-0,ch=getchar();
16     return x*w;
17 }
18 int L,R,T;
19 int Get(int x)
20 {
21     while(x%10==0) x/=10;
22     int u=x,k=0;
23     while(u) k++,u/=10;
24     if(x%10==5) return 2*k-1;
25     else return 2*k;
26 }
27 int M(int x)
28 {
29     int ans=1;
30     while(x%10==0) ans*=10,x/=10;
31     return ans;
32 }
33 int main()
34 {
35     T=read();
36     while(T--)
37     {
38         L=read();R=read();
39         Rr int tmp=Get(L),ans=L;
40         while(1)
41         {
42             L+=M(L);
43             if(L>R) break;
44             if(Get(L)<tmp) tmp=Get(L),ans=L;
45         } 
46         printf("%d\n",ans);
47     }
48     return 0;
49 }

当你的心静下来的时候,你会发现这个世界竟如此美好!

以上是关于[HEOI2015]定价的主要内容,如果未能解决你的问题,请参考以下文章

[HEOI2015]定价

[HEOI2015]定价

[HEOI2015]定价

[HEOI2015]定价

P4109 [HEOI2015]定价

BZOJ4029 HEOI2015定价