最近总是有些创作的欲望……文思如泉涌啊,可能前几天文学青年当多了……
于是,我想起自己还没有一个技术Blog…N久之前的Baidu Blog不适合当技术Blog……
于是我又挖出了这里……话说以前我写的代码还真是烂啊……
这里的内容,目前主要是关于ACM/ICPC 和 TopCoder的一些算法……
今天刷了少许高精度题,用java一一水过……
有一个不为人知的技巧:java的数制转换(2进制~36进制,任意转换)
BigInteger有个方法,toString(int radix),把10进制数转到2~26进制
但是往回转似乎String就没有toBigInteger()的方法了……
java的Scanner有一个叫做nextBigInteger(int radix)的方法,把输入视作radix进制的数,读入后转成10进制的BigInteger
可以用类似sscanf,stringstream的方法
1 import java.util.*;
2 import java.math.*;
3
4 public class Main {
5 public static void main(String[] args) {
6 String a="1234";
7 Scanner cin=new Scanner(a);
8 BigInteger A=cin.nextBigInteger(5);
9 System.out.println(A);
10 }
11 }
输出的就是1234的十进制表示,爽啊……
还有传说中C/C++的猥琐读入法
因为getchar()速度远远快于Scanf,尽管增加了位运算和加减,但是总体上还是优化很大……
1 inline int nextInt()
2 {
3 int ans=0; char now;
4 for (;;)
5 {
6 now=getchar();
7 if (now<'0' || now>'9') break;
8 ans=(ans<<3)+(ans<<1)+now-'0';
9 }
10 return ans;
11 }
12
POJ3697,从前1200MS,优化了IO后,进入排名榜前列……