模拟 --- hdu 12878 : Fun With Fractions
Fun With Fractions |
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB |
Total submit users: 152, Accepted users: 32 |
Problem 12878 : No special judgement |
Problem description |
A rational number can be represented as the ratio of two integers, referred to as the numerator (n) and the denominator (d) and written n/d. A rational number's representation is not unique. For example the rational numbers 1/2 and 2/4 are equivalent. A rational number representation is described as "in lowest terms" if the numerator and denominator have no common factors. Thus 1/2 is in lowest terms but 2/4 is not. A rational number can be reduced to lowest terms by dividing by the greatest common divisor of n and d. |
Input |
Input will consist of specifications for a series of tests. Information for |
Output |
Output should consist of one line for each test comprising the test number |
Sample Input |
2 |
Sample Output |
Test 1: 5/6 |
Problem Source |
HNU Contest |
Mean:
给你n个数,其中包含分数、整数,对这n个数求和。
analyse:
按照题目意思模拟即可,主要考察coding能力.
Time complexity:O(n)
Source code:
// K MS
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<iomanip>
#include<string>
#include<climits>
#include<cmath>
#define MAX 1005
#define LL long long
using namespace std;
int n,kase=;
int flag[MAX];
char str[MAX][];
void read()
{
memset(flag,,sizeof(flag));
for(int i=;i<=n;i++)
{
scanf("%s",str[i]);
int len=strlen(str[i]);
for(int j=;j<len;j++)
{
if(str[i][j]==',')
{
flag[i]=;
break;
}
else if(str[i][j]=='/')
{
flag[i]=;
break;
}
}
}
}
int gcd(int a,int b)
{
if(b==)
return a;
else return gcd(b,a%b);
}
int lcm(int a,int b)
{
int x=gcd(a,b);
return a*b/x;
}
void solve()
{
int num;
int zi=,mu=;
for(int i=;i<=n;i++)
{
int a,b;
if(flag[i]==) // 6
{
sscanf(str[i],"%d",&num);
zi+=mu*num;
continue;
}
else if(flag[i]==) // 6,5/3
{
sscanf(str[i],"%d,%d/%d",&num,&a,&b);
zi+=mu*num;
}
else // 5/3
{
sscanf(str[i],"%d/%d",&a,&b);
}
int newmu=lcm(mu,b);
int newa=(newmu/b)*a;
int newzi=(newmu/mu)*zi;
zi=newzi+newa;
mu=newmu;
if(zi%mu==)
{
zi=zi/mu;
mu=;
continue;
}
}
zi-=mu;
if(gcd(zi,mu)!=)
{
int tmp=gcd(zi,mu);
zi/=tmp;
mu/=tmp;
}
if(zi==||mu==)
{
puts("0");
return ;
}
if(zi>=mu)
{
if(zi%mu==)
{
printf("%d\n",zi/mu);
return ;
}
else
{
int integer=;
while(zi>mu)
{
zi-=mu,integer++;
}
printf("%d,%d/%d\n",integer,zi,mu);
return ;
}
}
else
printf("%d/%d\n",zi,mu);
}
int main()
{
// freopen("cin.txt","r",stdin);
// freopen("cout.txt","w",stdout);
while(~scanf("%d",&n),n)
{
read();
printf("Test %d: ",kase++);
solve();
}
return ;
}
模拟 --- hdu 12878 : Fun With Fractions的更多相关文章
- [模拟] hdu 4452 Running Rabbits
意甲冠军: 两个人在一个人(1,1),一个人(N,N) 要人人搬家每秒的速度v.而一个s代表移动s左转方向秒 特别值得注意的是假设壁,反弹.改变方向 例如,在(1,1),采取的一个步骤,以左(1,0) ...
- [ACM_模拟] HDU 1006 Tick and Tick [时钟间隔角度问题]
Problem Description The three hands of the clock are rotating every second and meeting each other ma ...
- 优先队列 + 模拟 - HDU 5437 Alisha’s Party
Alisha’s Party Problem's Link Mean: Alisha过生日,有k个朋友来参加聚会,由于空间有限,Alisha每次开门只能让p个人进来,而且带的礼物价值越高就越先进入. ...
- HDU题解索引
HDU 1000 A + B Problem I/O HDU 1001 Sum Problem 数学 HDU 1002 A + B Problem II 高精度加法 HDU 1003 Maxsu ...
- HDU 5912 Fraction 【模拟】 (2016中国大学生程序设计竞赛(长春))
Fraction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- HDU 5102 The K-th Distance(模拟)
题意:输入一棵树,输出前k小的点对最短距离dis(i,j)的和. 模拟,官方题解说得很清楚了.不重复了. http://bestcoder.hdu.edu.cn/ 需要注意的是,复杂度要O(n+k), ...
- hdu 5071(2014鞍山现场赛B题,大模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 思路:模拟题,没啥可说的,移动的时候需要注意top的变化. #include <iostr ...
- HDU 5510---Bazinga(指针模拟)
题目链接 http://acm.hdu.edu.cn/search.php?action=listproblem Problem Description Ladies and gentlemen, p ...
- HDU 5047 Sawtooth(大数模拟)上海赛区网赛1006
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5047 解题报告:问一个“M”型可以把一个矩形的平面最多分割成多少块. 输入是有n个“M",现 ...
随机推荐
- Java多线程9:ThreadLocal源码剖析
ThreadLocal源码剖析 ThreadLocal其实比较简单,因为类里就三个public方法:set(T value).get().remove().先剖析源码清楚地知道ThreadLocal是 ...
- [Unity3D]做个小Demo学习Input.touches
[Unity3D]做个小Demo学习Input.touches 学不如做,下面用一个简单的Demo展示的Input.touches各项字段,有图有真相. 本项目已发布到Github,地址在(https ...
- 虚拟化平台cloudstack(7)——新版本的调试
调试环境 ubuntu 12.04 JDK1.7 apache-maven-3.10 eclipse 4.2 Juno mysql 5 源码下载及调试 上面的几个软件在上一篇中已经介绍了. 在新的版本 ...
- zk系列-zookeeper的使用
zk支持java/c访问,java常用的有apache-zkclient.社区版的i0tec-zkclient.github.adyliu,apache-zkclient是zk自身提供的接口,i0te ...
- Git学习笔记(4)——添加远程仓库,克隆远程库,以及库的推送
本文记录了远程库的连接和库的克隆和推送. 远程仓库简介 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上.有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且 ...
- ubuntu:solve the problem of 'E:Problem with MergeList /var/lib/apt/lists/'
just run this command: sudo rm /var/lib/apt/lists/* -vfR it will remove all the software package wit ...
- php实现注册
<?php header("Content-Type:text/html;charset=gb2312"); @mysql_connect('localhost','root ...
- Atitit attilax在自然语言处理领域的成果
Atitit attilax在自然语言处理领域的成果 1.1. 完整的自然语言架构方案(词汇,语法,文字的选型与搭配)1 1.2. 中文分词1 1.3. 全文检索1 1.4. 中文 阿拉伯文 英文的简 ...
- Linux初学 - head,tail,grep,sed,yum,find
head 查看文件头部 -n 指定查看行数 默认10行 tail 查看文件尾部 n 指定查看行数 默认10行 Grep 命令 用法大全 . 参数: -I :忽略大小写 -c :打印匹配的行数 -l : ...
- 创建Cookie,简单模拟登录,记录登录名,购物车记录先前添加内容,session控制登录
工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站, ...