一.关于浮点数的输入输出
scanf :floot : %f
double : %lf
long double : %Lf
printf :floot : %f
double : %f(用%lf的话会出很多奇奇怪怪的问题,poj好像必须用%f,不然wa(惨痛教训,bug找了半天,没想到是错在这))
long double : %Lf
二.1.Java 类名称必须为Main
2.java中字符串String是不可以修改的,要修改只能转换为字符数组.
三.memset函数:很多数都不能直接用memset赋值,因为memset是一个字节一个字节赋值的。(所以若要赋值的那个数转成2进制之后每个字节都是一样的话才能用memset)
可行:
memset(a,0,sizeof(a))//因为0低8为00000000,而32位就是32个0
memset(a,-1,sizeof(a))//因为1低8为11111111,而32位就是32个1
memset(a,0x3f3f3f3f,sizeof(a))// 0x3f3f3f3f=00111111 00111111 00111111 00111111,低8为00111111,一个字节一个字节填充之后还是00111111 00111111 00111111 00111111
源码:
void *(memset)(void *s, int c, size_t n) { const unsigned char uc = c; unsigned char *su; for (su = s; 0 < n; ++su, --n) *su = uc; return (s); }
四.G++与C++:在提交题目中的语言选项里,G++和C++都代表编译的方式。
C++:最标准的编译方式(ANSI C++编译)。
G++:意味着你将使用GNU项目中最平凡适用人群最多的编译器(其实也就是我们熟悉的Code::Blocks的自带的编译器,Windows环境里一般是MinGW下的gcc,Linux中的gcc和前者基本是一个东西)进行编译。
相对而言C++比G++快,但是C++容易栈溢出
防栈溢出:在代码里加入#pragma comment(linker, "/STACK:102400000,102400000")
输入输出加速外挂:
void scan_d(int &num)//输入 { char in; bool neg=false; while(((in=getchar()) > '9' || in<'0') && in!='-') ; if(in=='-'){ neg=true; while((in=getchar()) >'9' || in<'0'); } num=in-'0'; while(in=getchar(),in>='0'&&in<='9') num*=10,num+=in-'0'; if(neg) num=0-num; } void out(int a) //输出 { if(a < 0) {putchar('-'); a = -a;} if(a >= 10)out(a / 10); putchar(a % 10 + '0'); }
参考:https://blog.csdn.net/roney_win/article/details/8708519 ,https://blog.csdn.net/wr_technology/article/details/53414447
五.UVA的题目如果函数(除了main)写的是int却没给返回值会RE