2015湘潭市第七届大学生程序设计竞赛 —— Fraction

题目大意:

  小数化分数,但是分母限制在[1,1000],很明显的枚举,但是在赛场上的时候傻逼了,无论怎么枚举,怎么二分就是wa,wa到死···········。

(ps:我要给出题人寄刀片~~~~),这个题目需要注意的是有可能输出0/1.

 1 #include <cmath>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <iostream>
 5 #include <algorithm>
 6 using namespace std;
 7 const int maxn = 501000;
 8
 9 struct node
10 {
11     int x, y;
12 };
13 node stu[maxn];
14 bool cmp (node a, node b)
15 {
16     return a.x*1.0/a.y < b.x*1.0/b.y ? true : false;
17 }
18
19 int gcd (int a, int b)
20 {
21     return a%b==0?b:gcd(b, a%b);
22 }
23
24 int Bin_Sreach(double n, int low, int high)
25 {
26     while (low <= high)
27     {
28         int mid = (low + high) / 2;
29         double num = stu[mid].x * 1.0 / stu[mid].y;
30         if (num < n)
31             low = mid;
32         if (num > n)
33             high = mid;
34         if (high - low == 1)
35             break;
36     }
37     double num1 = stu[low].x*1.0 / stu[low].y;
38     double num2 = stu[high].x*1.0 / stu[high].y;
39     if (fabs(n - num1) > fabs(n - num2))
40         return high;
41     return low;
42 }
43 int main ()
44 {
45     int t, k = 1;
46
47     stu[0].y = 1;
48     for (int i=1; i<=1000; i++)
49         for (int j=i; j<=1000; j++)
50         {
51             if (gcd(j, i) == 1)
52             {
53                 stu[k].x = i;
54                 stu[k++].y = j;
55             }
56         }
57         sort (stu, stu+k, cmp);
58
59         scanf ("%d", &t);
60         while (t --)
61         {
62             double n;
63             scanf ("%lf", &n);
64             int p = Bin_Sreach(n, 0, k-1);
65             printf ("%d/%d\n", stu[p].x, stu[p].y);
66         }
67         return 0;
68 }
时间: 2024-07-29 07:54:49

2015湘潭市第七届大学生程序设计竞赛 —— Fraction的相关文章

“亚信科技杯”南邮第七届大学生程序设计竞赛之网络预赛 (部分题解)

“亚信科技杯”南邮第七届大学生程序设计竞赛之网络预赛 F 自动售货机 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte总提交 : 60            测试通过 : 13  题目描述 教学楼有一台奇怪的自动售货机,它只售卖一种饮料,单价5元,并且只收5元.10元面值的货币,但是同学们都很喜欢喝.这个售货机里没有多余的找零,也就是说如果一个持有10元的同学第一个购买,则他不能获得5元找零,但是如果在他之前有一个持有5

河南省第七届大学生程序设计竞赛 问题 A: 物资调度【简单dfs】

题目描述 某地区发生了地震,灾区已经非常困难,灾民急需一些帐篷.衣物.食品和血浆等物资.可通往灾区的道路到处都是塌方,70%以上的路面损坏,桥梁全部被毁.国家立即启动应急预案,展开史上最大强度的非作战式的空运行动,准备向灾区投放急需物资.   一方有难,八方支援.现在已知有N个地方分别有A1,A2,….,An个物资可供调配.目前灾区需要物资数量为M. 现在,请你帮忙算一算,总共有多少种物质调度方案.假设某地方一旦被选择调配,则其物资数全部运走. 输入 第一行: K     表示有K组测试数据.

河南省第六届大学生程序设计竞赛--Card Trick

Card Trick Time Limit: 2 Seconds    Memory Limit: 64 MB Description The magician shuffles a small pack of cards, holds it face down and performs the following procedure: 1. The top card is moved to the bottom of the pack. The new top card is dealt fa

湖南省第九届大学生程序设计竞赛

I Interesting Calculator CSU 过了 TOJ超时了 先记一下 #include <cstdio> #include <cstring> #include <queue> using namespace std; int a[100]; bool b[100010]; int c[100010]; int d[100010]; int x, y; int cas = 1; struct node { int x, t, tt; node(){}

河南省第六届大学生程序设计竞赛--异形卵

异 形 卵 Time Limit: 1 Second    Memory Limit: 64 MB Description 我们探索宇宙,是想了解浩瀚星空的奥妙,但我们却很少意识到宇宙深处藏匿的危险,它们无时无刻不紧盯着我们的地球.如果外星人拜访我们,结果可能与哥伦布当年踏足美洲大陆不会有什么两样,这是历史,也是现实. 在ZDM-777星球上发现的休眠异形卵,其外表与常见的卵不同,表面被一层石墨覆盖.当人走近时,那层石墨开始消融,能看到里面的异形卵正在活动,异形卵是活物,具备一些热量或压力传感器

河南省第六届大学生程序设计竞赛--外星人的供给站

外星人的供给站 Time Limit: 2 Seconds    Memory Limit: 512 MB Description 外星人指的是地球以外的智慧生命.外星人长的是不是与地球上的人一样并不重要,但起码应该符合我们目前对生命基本形式的认识.比如,我们所知的任何生命都离不开液态水,并且都是基于化学元素碳(C)的有机分子组合成的复杂有机体. 42岁的天文学家Dr. Kong已经执著地观测ZDM-777星球十多年了,这个被称为"战神"的红色星球让他如此着迷.在过去的十多年中,他经常

最舒适的路线--河南省第六届大学生程序设计竞赛

题目描述 异形卵潜伏在某区域的一个神经网络中.其网络共有N个神经元(编号为1,2,3,…,N),这些神经元由M条通道连接着.两个神经元之间可能有多条通道.异形卵可以在这些通道上来回游动,但在神经网络中任一条通道的游动速度必须是一定的.当然异形卵不希望从一条通道游动到另一条通道速度变化太大,否则它会很不舒服. 现在异形卵聚居在神经元S点,想游动到神经元T点.它希望选择一条游动过程中通道最大速度与最小速度比尽可能小的路线,也就是所谓最舒适的路线. 输入 第一行: K     表示有多少组测试数据.

第七届湘计算机程序设计竞赛的学生 报道称,数字游戏

报数游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述     n 个人站成一行玩一个报数游戏.全部人从左到右编号为 1 到 n.游戏開始时,最左边的人报 1.他右边的人报 2,编号为 3 的人报 3,等等.当编号为 n 的人(即最右边的人)报完 n 之后,轮到他左边的人(即编号为n-1 的人)报 n+1,然后编号为 n-2 的人报 n+2.以此类推.当最左边的人再次报数之后,报数方向又变成从左到右,依次类推. 为了防止游戏太无聊,报数时有一个特例:假设应该报

2017年“达内杯”台州学院第十届大学生程序设计竞赛 非官方题解

感谢crq兄弟搞了这次校赛,让我认识到了自己傻的时候确实傻的可爱.crq棒棒哒,我们OJ也十年多了,不容易啊.大家能用得上的时候确实要练好基本功啊. 5259: 多项式值统计   Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 316            Accepted:35 Description 形如anxn+an-1xn-1+-+a2x2 +a1x +a0的多项式称为一元多项式