【PATest】练习总结

来源:互联网 发布:跟阿铭学linux第二版 编辑:程序博客网 时间:2024/06/11 09:55

练习中遇到的一些问题,慢慢更新

20170529

学习了刘汝佳的前五章,前三章所有例题习题都做了,第四第五两章的题目感觉有些吃力,刷一刷pat上的题,再继续学。

1001 a+b format

一直以为是算法竞赛中的hello world,然而发现并不简单,需要统计a+b的位数,除相应10的幂后取10的模,逐位输出。感觉上用c++的string会简单很多,可以用size()直接获得结果的长度,但是不会string和其他类型的转化。还要注意范围,百万的区间int如果是16位就不够,所以用long比较保险。

附:*转换成string

string *tos(* i)     //改一下函数名,改一下类型,搞定  {      ostringstream os;      os<<i;      string result;      istringstream is(os.str());      is>>result;      return result;    }
string转换成*
* sto*(string str) //改一下函数名,变量类型,搞定  {      * result;      istringstream is(str);      is >> result;      return result;  } 

1002 a+b for Polynomials

这道题用map很好做。map默认是从小到大排,再用一个栈把map中的元素倒序输出,在其他类型转string时可以用sprintf向char[]中输出,还可以用占位符

控制格式,破费特。另外栈的pop不返回数据,只删除栈顶数据。先top再pop

map<int, double> num;char a[100];stack<string> s;for (map<int, double>::const_iterator it = num.begin(); it != num.end(); ++it){sprintf(a, " %d %.1f", it->first, it->second);s.push(a);}
这道题要注意题目中对k的隐含要求nonzero





0 0
原创粉丝点击