- 题解
- 2012-10-30 10:58:46 @
进制转换:
首先我们将十进制循环小数转换成a/b的形式。
转换的方法是解方程,例如转换0.0(3),我们将其设为X。
那么100X=3.(3),10X=0.(3),可以得到方程100X-10X=3。
所以解得 X=3/90=1/30。
不难发现,我们列方程的方法是将X的小数点向右移动若干位,移出两个正好错开了循环节长度为的小数,此时两个数相减,可以将循环部分消除,便可以解出方程。
一般地,假设有p1位非循环位,非循环部分形成的十进制数是k1;有p2位循环节,循环节部分形成的十进制数是k2。
可以得到方程:10^(p1+p2)*X-(10^p1)*X=(10^p2)k1+k2-k1。
解出即可。
接着我们将十进制分数a/b转换成二进制小数。
由于数据保证b
11 条评论
-
LV 0 @ 2012-10-30 10:58:47
RE:hjl_
RE:hjl_
让非循环节部分长度尽可能短。 -
2012-10-29 16:24:32@
进制转换
假如是1/3
那么答案是0.0(10)还是0.(01) -
2012-10-29 16:11:43@
UrzoyHe
进制转换的十进制小数转换成分数可以这样:
0.X(Y) 用m表示X的长度(非循环节长度); n表示Y的长度(循环节长度);
a/b== X/(10^m)+Y/(9..9*10^m) {9..9 -->n个9}
== (9..9X+Y)/(9..*10^m)
若gcd(a,b)1 则化简 (a div gcd(a,b))/(b div gcd(a,b));
{可能有手滑打错的地方 自己注意就行了} -
2012-10-29 15:37:41@
有标程吗...
第二题如果不按照顺序搜索,如何保证解的正确性?后一个的时间一定要大于前一个,难道搜到底了再判断?
-
2012-10-29 15:05:43@
第二题贪心,好像90分。我是这样做的。先假设最后一封贺卡来自0时区,然后从n-1循环到1,每次都选取能满足条件(时间的先后关系)的并且尚未用过的时区。最后都加上一个值,使得所有时区都在0~n-1之间。不知道哪里错了?
-
2012-10-29 14:41:23@
第二题可不可以使用差分约束系统或者递推解决?求比较有代表性的大数据
-
2012-10-29 14:16:44@
关于进制转换这题
个人觉得直接模拟性价比较高
具体做法如下
将十进制的循环部分扩增到1000位
然后不断*2,hash判重 -
2012-10-29 13:54:55@
同求数据...
-
2012-10-29 11:17:16@
请问能放出数据吗?
-
2012-10-29 11:16:01@
有没有标程可以参考一下呢
有没有标程可以参考一下呢
-
2012-10-29 09:38:46@
单调队列!?
orz LZ
vijos上有关单调队列的题都有什么? --突然很感兴趣
- 1