golang重定向输入输出办法(算法竞赛向)
2022/6/8 1:21:30
本文主要是介绍golang重定向输入输出办法(算法竞赛向),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本来是想用golang,因为这是工作中的主要语言,不妨试一试打cf,结果写了一题就被劝退了,golang对于打算法竞赛极不友好
首先,golang在cf中,fmt的各种scanf和printf并不直接接收来自于标准输入输出流的内容,所以有些oj由于没有做对STD IO的支持,golang提交上去就报CE,很恶心
其次,golang里面缺乏很多基本的数据结构,比如set,map也只是单纯的hash实现,效率并不高,所有的东西还需要专门make
而且,golang的类型比较固定,就是说,int无法和long long类型进行运算,虽然这个习惯并不好,但是如果强行cast需要很多代码量,麻烦得很,增加了很多代码量
但是偶尔找个乐子还是可以的
于是乎专门搞了套模板,本来以为golang这种语言有类似于freopen这种东西,结果发现没有,只能用fopen打开,因为golang自带err这个参数,所以直接判断是否成功打开这个文件作为判断oj还是本地,
实现类似功能
功能
1. 支持标准输入输出
2. 支持本地文件流测试
3. 无需更改即可提交oj
package main import ( "bufio" "fmt" "io" "os" ) func solve(in *bufio.Reader, out io.Writer) { var x uint fmt.Fscan(in, &x) tmp := x tot := 0 for tmp != 0 { if (tmp & 1) != 0 { tot++ } tmp >>= 1 } ans := uint(0) for i := 0; i <= 30; i++ { var p uint p = uint(1 << uint(i)) if (p&x) > 0 && tot > 1 { fmt.Fprintln(out, p) return } if (p&x) == 0 && ans == uint(0) { ans |= p } if (p & x) != 0 { tot -= 1 } } for i := 0; i <= 30; i++ { var p uint p = uint(1 << uint(i)) if (p & x) > 0 { ans |= p fmt.Fprintln(out, ans) return } } } func run(_r io.Reader, out io.Writer) { in := bufio.NewReader(_r) var kase int fmt.Fscan(in, &kase) for mmm := 1; mmm <= kase; mmm++ { solve(in, out) } } func main() { file, err := os.Open("C:\\Users\\tiany\\GolandProjects\\awesomeProject\\data.txt") if err != nil { file = os.Stdin } run(file, os.Stdout) }
这篇关于golang重定向输入输出办法(算法竞赛向)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享