HDU 2037 今年暑假不AC

Description:

“今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%…”
确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。
作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)

HDU 1717 小数化分数2

题目

Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。

Input

第一行是一个整数N,表示有多少组数据。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。

Output

对每一个对应的小数化成最简分数后输出,占一行。

Sample Input

3
0.(4)
0.5
0.32(692307)

Sample Output

49
12
1752

题目链接

非循环小数化分数非常简单,循环小数化分数的规则为:
分子:小数点后数字减(-)非循环体数字
分母:循环体位数个9加非循环体位数个0
最后记得化简分数。
例如0.32(692307)化分数分子是32692307-32,分母是99999900,化简便得1752

AC代码:

`cpp

#include <stdio.h>

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define mem(a,b) memset(a,b,sizeof(a))
typedef long long ll;

// 利用gcd求最大公约数化简分数
int gcd(int x, int y) {
return y ? gcd(y,x % y) : x;
}

void Solve(char s) {
int len = strlen(s); // 计算数据长度
int Up1 = 0,Up2 = 0;
int NumOfZero = 0,NumOfNine = 0;
int flag = 0;
// 计算分母中0的个数
for (int i = 2;i < len;++i) {
if (s[i] == ‘(‘) {
break;
}
Up1 = Up1
10 + s[i] - ‘0’;
NumOfZero++;
}
// 计算分母中9的个数
for (int i = 2;i < len;++i) {
if (s[i] == ‘(‘ || s[i] == ‘)’) {
// 标记为循环小数
flag = 1;
continue;
}
Up2 = Up2 10 + s[i] - ‘0’;
NumOfNine++;
}
NumOfNine -= NumOfZero;
// 计算分子
int Up = Up2 - Up1;
int Down = 0;
// 不是循环小数
if (!flag) {
Up = Up1;
Up = Up2;
Down = 1;
NumOfNine = 0;
}
// 计算分母
for (int i = 0;i < NumOfNine;++i) {
Down = Down
10 + 9;
}
for (int i = 0;i < NumOfZero;++i) {
Down *= 10;
}
// 化简分数
int Gcd = gcd(Up, Down);
Down /= Gcd;
Up /= Gcd;
cout << Up << “/“ << Down << endl;
}

int main() {
ios::sync_with_stdio(0);
int N;
cin >> N;
while (N–) {
char s[15];
cin >> s;
Solve(s);
}
return 0;
}

2018年全国多校算法寒假训练营练习比赛(第一场)I - 找数字个数

Description:

lulu喜欢小于等于1000的正整数,但是如果某个数是a或b的倍数,lulu会讨厌这个数。如果某个数里包含了a和b两个数里包含的数,lulu也会讨厌。(例如a=14,b=23,如果数字中包含1、2、3、4这四个数中的任意一个数,lulu就会讨厌这个数)。现在告诉你a,b,你能说出lulu喜欢的数有多少个么。

2018年全国多校算法寒假训练营练习比赛(第二场)D - YB要打炉石

Description:

Wozuinb非常喜欢打炉石传说,但是菜的不行,所以他决定打竞技场来练练手。系统按顺序给出n张卡牌,每张卡牌都有自己的使用消耗a[i],每次只给出一张,wozuinb可以选择或者弃掉这张牌。每选择一张牌都会按选择顺序放在卡槽中,当卡槽中放满30张即可组成一套套牌。Wozuinb希望自己的套牌的消耗满足一个平滑的曲线,即30张卡牌都满足第i张卡牌的消耗不小于第i-1张(i>1)。请你帮助wozuinb看一看,这些卡牌能不能组成想要的套牌,如果能组成输出“yes”,如果不能输出“no”。

|