Energy Conversion

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4278    Accepted Submission(s): 1024

Problem Description
  魔法师百小度也有遇到难题的时候——

  现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的能量和大量的脑力。

  过了许久,百小度终于读懂魔法文字的含义:石门里面有一个石盘,魔法师需要通过魔法将这个石盘旋转X度,以使上面的刻纹与天相对应,才能打开石门。

  但是,旋转石盘需要N点能量值,而为了解读密文,百小度的能量值只剩M点了!破坏石门是不可能的,因为那将需要更多的能量。不过,幸运的是,作为魔法师的百小度可以耗费V点能量,使得自己的能量变为现在剩余能量的K倍(魔法师的世界你永远不懂,谁也不知道他是怎么做到的)。比如,现在百小度有A点能量,那么他可以使自己的能量变为(A-V)*K点(能量在任何时候都不可以为负,即:如果A小于V的话,就不能够执行转换)。

  然而,在解读密文的过程中,百小度预支了他的智商,所以他现在不知道自己是否能够旋转石盘,打开石门,你能帮帮他吗?

 
Input
  输入数据第一行是一个整数T,表示包含T组测试样例;
  接下来是T行数据,每行有4个自然数N,M,V,K(字符含义见题目描述);

  数据范围:
  T<=100
  N,M,V,K <= 10^8

 
Output
  对于每组数据,请输出最少做几次能量转换才能够有足够的能量点开门;
  如果无法做到,请直接输出-1。
 
Sample Input
4
10 3 1 2
10 2 1 2
10 9 7 3
10 10 10000 0
 
Sample Output
3
-1
-1
0

 
  逻辑题,精度问题
  思路:逻辑是这样的,先排除不需要转换就有足够的能量开门的情况,即:N<=M。剩下的就是能量不够的情况,需要转换来产生能量,而这个时候会有两种情况,转换的能量越来越少(例如 V==M,刚开始转换就消耗了所有能量,K多大都没用了),转换的能量越来越多。排除能量越来越少的情况,即:(M-V)*K<=M。剩下的就是能量越来越多的情况,最后模拟一下能量转化过程,不断循环产生能量,直到有足够的能量开门为止,输出转换的次数。
  注意:(M-V)*K 结果可能超出 int 范围,所以每个数用 long long 类型,注意输入输出的时候要使用 "I64d"。
  代码
 #include <iostream>
#include <stdio.h>
using namespace std; int main()
{
long long n,m,v,k;
int T;
scanf("%d",&T);
while(T--){
scanf("%I64d%I64d%I64d%I64d",&n,&m,&v,&k);
int sum = ;
if(m>=n) //不用转换就可以
printf("0\n");
else if((m-v)*k<=m) //一定不可以
printf("-1\n");
else{ //模拟转换过程,直到拥有足够的能量
while(m<n){
m = (m-v)*k;
sum++;
}
printf("%d\n",sum);
}
}
return ;
}

2014百度之星资格赛 1001:Energy Conversion(水题,逻辑题)的更多相关文章

  1. ACM-百度之星资格赛之Energy Conversion——hdu4823

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lx417147512/article/details/26400079 Energy Convers ...

  2. 2014年百度之星程序设计大赛 - 资格赛 1001 Energy Conversion

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/sr19930829/article/details/26003661 Energy Conversi ...

  3. 2014百度之星资格赛——Disk Schedule

    2014百度拥有明星格比赛--Disk Schedule Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取. 为了提高效率.须要人为安排磁盘读取. 然而.在 ...

  4. 【2014年百度之星资格赛1001】Energy Conversion

    Problem Description 魔法师百小度也有遇到难题的时候—— 现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的能量和大量的脑力. 过了许久, ...

  5. HDU - 6344 2018百度之星资格赛 1001调查问卷(状压dp)

    调查问卷  Accepts: 1289  Submissions: 5642  Time Limit: 6500/6000 MS (Java/Others)  Memory Limit: 262144 ...

  6. 2014百度之星资格赛 1004:Labyrinth(DP)

    Labyrinth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  7. ACM学习历程—BestCoder 2015百度之星资格赛1001 大搬家(递推 && 组合数学)

    Problem Description 近期B厂组织了一次大搬家,所有人都要按照指示换到指定的座位上.指示的内容是坐在位置i 上的人要搬到位置j 上.现在B厂有N 个人,一对一到N 个位置上.搬家之后 ...

  8. 2014百度之星资格赛—— Xor Sum(01字典树)

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total ...

  9. 2016百度之星 资格赛ABCDE

    看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...

随机推荐

  1. vim帮助手册汉化

    vim帮助手册汉化 vim帮助手册汉化 下载vimcdoc-1.9.0.tar.gz 安装vimcodc-1.9.0 vim命令模式下输入help可以查看vim的帮助手册.美中不足的是这个帮助手册是英 ...

  2. 用Kibana和logstash快速搭建实时日志查询、收集与分析系统

    Logstash是一个完全开源的工具,他可以对你的日志进行收集.分析,并将其存储供以后使用(如,搜索),您可以使用它.说到搜索,logstash带有一个web界面,搜索和展示所有日志. kibana ...

  3. java 中for each语句

    [转]java foreach 使用   foreach语句是java5的新特征之一,在遍历数组.集合方面,foreach为开发人员提供了极大的方便.   foreach语句是for语句的特殊简化版本 ...

  4. windows下打开VMware虚拟机时提示内存不足的处理方法

    参考:http://thinkpig007.blog.51cto.com/971471/1589831 以管理员身份运行vmware.exe即可 错误的错误提示: Not enough physica ...

  5. php在没用xdebug等调试工具的情况下如何让调试内容优雅地展现出来?--php数组格式化

    不知道各位猿猿们有没有碰到过类似的情况.装的PHP环境没有xdebug,而又经常用到数组.调试的时候也需要经常查看数组的结构和字段内容,用var_dump打印出来的数组内容总是杂乱无章.实在无法忍受, ...

  6. ios 把已经点击过的UILocalNotification 从系统的通知中心现实中移除

    在ios7 上一个uilocalnotification在中心现实后,点击该消息,程序被唤醒了,但是该通知没有被移除.用了以下的代码后可以解决这个问题         UIApplication.sh ...

  7. Linux下安装Nginx服务器

    安装Nginx之前,首先要安装好编译环境gcc和g++,然后以CentOS为例安装Nginx,安装Nginx需要PRCE库.zlib库和ssl的支持,除了ssl外其他的我们都是去官网下载: Nginx ...

  8. shiro的简单使用

    <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http:// ...

  9. C#导出Excel动态列

    一.用StreamWrite流对象,导出Excel 1. string _sPath = GenerateSalaryMonthlyReport(dgvSalarySum); System.Diagn ...

  10. Oracle、SQL Server、MySQL数据类型对比

    1,标准SQL数据类型 BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中.不需数据转换(例如,转换到文本数据).数据输入二进制字段的方式决定了它的输出方式. BIT 1 个字 ...