HDU 4788 Hard Disk Drive

原创 2015年07月10日 23:28:00

Hard Disk Drive

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


Problem Description
  Yesterday your dear cousin Coach Pang gave you a new 100MB hard disk drive (HDD) as a gift because you will get married next year.
  But you turned on your computer and the operating system (OS) told you the HDD is about 95MB. The 5MB of space is missing. It is known that the HDD manufacturers have a different capacity measurement. The manufacturers think 1 “kilo” is 1000 but the OS thinks that is 1024. There are several descriptions of the size of an HDD. They are byte, kilobyte, megabyte, gigabyte, terabyte, petabyte, exabyte, zetabyte and yottabyte. Each one equals a “kilo” of the previous one. For example 1 gigabyte is 1 “kilo” megabytes.
  Now you know the size of a hard disk represented by manufacturers and you want to calculate the percentage of the “missing part”.

Input
  The first line contains an integer T, which indicates the number of test cases.
  For each test case, there is one line contains a string in format “number[unit]” where number is a positive integer within [1, 1000] and unit is the description of size which could be “B”, “KB”, “MB”, “GB”, “TB”, “PB”, “EB”, “ZB”, “YB” in short respectively.

Output
  For each test case, output one line “Case #x: y”, where x is the case number (starting from 1) and y is the percentage of the “missing part”. The answer should be rounded to two digits after the decimal point.

Sample Input
2 100[MB] 1[B]

Sample Output
Case #1: 4.63% Case #2: 0.00%
Hint

Source





很简单的水题,重点在体会strcmp函数的用途和用法,注意关注一下巧妙的输入代码。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <cstring>
#include <algorithm>
#include <string>
#include <set>
#include <functional>
#include <numeric>
#include <sstream>
#include <stack>
#include <map>
#include <queue>
using namespace std;
long long solve(char s[])
{//“B”, “KB”, “MB”, “GB”, “TB”, “PB”, “EB”, “ZB”, “YB”
	if(strcmp(s,"B]") == 0)return 0;
	if(strcmp(s,"KB]") == 0)return 1;
	if(strcmp(s,"MB]") == 0)return 2;
	if(strcmp(s,"GB]") == 0)return 3;
	if(strcmp(s,"TB]") == 0)return 4;
	if(strcmp(s,"PB]") == 0)return 5;
	if(strcmp(s,"EB]") == 0)return 6;
	if(strcmp(s,"ZB]") == 0)return 7;
	if(strcmp(s,"YB]") == 0)return 8;
	
}
int main()
{
	long long T;
	cin >> T;
	long long g=1;
	while(T--)
	{
		long long num;
		char s[10000];
		cout<<"Case #"<<g++<<": ";
		scanf("%lld[%s",&num,&s);
		long long n = solve(s);
		printf("%.2f",100*(1-(num*pow(10,n*3))/(num*pow(2,n*10))));
		cout<<"%\n";
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

hdu 4788 Hard Disk Drive

hdu 4788 Hard Disk Drive
  • gwq5210
  • gwq5210
  • 2014年10月30日 10:41
  • 339

ACM-水题之Hard Disk Drive——HDU4788

Hard Disk Drive Problem Description   Yesterday your dear cousin Coach Pang gave you a new 100MB har...

HDU 4788 Hard Disk Drive(数学)

HDU 4788 Hard Disk Drive(数学)

HDU4788 Hard Disk Drive

Yesterday your dear cousin Coach Pang gave you a new 100MB hard disk drive (HDD) as a gift because y...

Live Archive 6542 Hard Disk Drive

Live Archive   6541   GRE Words Revenge 题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=co...

Solve Linux & Unix Systems Hard Disk Problems

8 Tips to Solve Linux & Unix Systems Hard Disk Problems Like Disk Full Or Can’t Write to the Disk ...

Ubuntu - 硬盘分区、格式化、自动挂载配置 | Hard disk add new partition, format, auto mount in ubuntu

【引用】Ubuntu - 硬盘分区、格式化、自动挂载配置 | Hard disk add new partition, format, auto mount in ubuntu   2011-08-...
  • ajioy
  • ajioy
  • 2011年09月10日 15:30
  • 3077

SSD(Solid StateDisk)和HDD(Hard Disk Driver) Simulator Research 固态硬盘和硬磁盘模拟器调研(修改)

抱歉,昨天写的关于硬盘模拟器的文章有错误,给大家造成了误解,不好意思,特此更正。 主要错误时Disksim3.0应该是模拟HDD的,而不是SSD的,要模拟SSD需要在Disksim3.0上集成SSD...
  • wyj7260
  • wyj7260
  • 2013年07月01日 10:27
  • 2573
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 4788 Hard Disk Drive
举报原因:
原因补充:

(最多只允许输入30个字)