1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > E. The Humanoid(枚举)

E. The Humanoid(枚举)

时间:2019-04-09 01:27:10

相关推荐

E. The Humanoid(枚举)

Problem - E - Codeforces

在Berlandia发生了通货膨胀,所以商店需要改变商品的价格。

商品n的当前价格已经给出。允许将该商品的价格提高k倍,1≤k≤m,k为整数。输出商品的最圆的可能的新价格。也就是在最后有最大数量的零的那个。

例如,数字481000比数字1000010更圆(481000的末尾有三个零,而1000010的末尾只有一个零)。

如果有几个可能的变体,输出新价格最大的那个。

如果不可能得到一个更圆的价格,则输出n⋅m(即可能的最大价格)。

输入

第一行包含一个整数t(1≤t≤104)--测试中测试用例的数量。

每个测试用例由一行组成。

这一行包含两个整数:n和m(1≤n,m≤109)。其中n是商品的旧价格,数字m意味着你可以增加价格n不超过m倍。

输出

对于每个测试案例,在单独的一行中输出形式为n⋅k(1≤k≤m,k-一个整数)的最圆整数。

如果有几个可能的变体,则输出新价格(值n⋅k)最大的那一个。

如果不可能得到一个更圆的价格,则输出n⋅m(即可能的最大价格)。

例子

输入复制

10

6 11

5 43

13 5

4 16

10050 12345

2 6

4 30

25 10

2 81

1 7

输出拷贝

60

200

65

60

120600000

10

100

200

100

7

备注

在第一种情况下n=6,m=11。我们不能得到一个末尾有两个零或更多的数字,因为我们需要将价格提高50倍,但50>m=11。10的最大价格倍数将是6⋅10=60。

在第二种情况下,n=5,m=43。100的最大价格倍数将是5⋅40=200。

在第三种情况下,n=13,m=5。所有可能的新价格都不会以0结尾,那么你应该输出n⋅m=65。

在第四种情况下,你应该将价格提高15倍。

在第五种情况下,将价格提高12000倍。

题解:

我们可以发现一共就三瓶药,两种,我们把所有喝药的顺序情况枚举出来,找最大值即可,

主要是写法,这样写比较简洁

#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<map>#include<vector>#include<queue>using namespace std;long long a[00];void solve(){long long n,hh;cin >> n >> hh;for(int i = 0;i < n;i++)cin >> a[i];sort(a,a+n);int ans = 0;for(int k = 0;k <= 2;k++){int up = 0;int i = 0;long long h = hh;while(i < n){if(h > a[i]){h += a[i++]/2;}else if(up == 3){break;}else{if(up == k){h = h*3;}else{h = h*2;}up++;}}ans = max(ans,i);}cout<<ans<<"\n";}int main(){int t = 1;cin >> t;while(t--){solve();}}//1 4//2 1//2 4//3 4//1 2//1 3//2 3

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。