0.读到文件的结尾,程序自动结束
while( ( scanf( “ %d ” ,&a) ) != -1 )
while( ( scanf( “ %d ” ,&a) ) != EOF)
while( ( scanf( “ %d ” ,&a) ) == 1 )
while( ~( scanf( “ %d ” ,&a) ) )
读到一个 0 时,程序结束
while( scanf( “ %d ” ,&a) ,a)
读到多个0时,程序结束
while( scanf( “ %d%d%d ”,&a,&b,&c),a+b+c )//a,b,c非负
while( scanf( “ %d%d%d ”,&a,&b,&c),abc)

1.注意函数sqrt( )的参数只能是float,double,long double型的。

2.EOF是int类型的。

3.纯字符串用puts()输出。数据大时最好用scanf()、printf()减少时间。先用scanf(),再用gets()会读入回车。所以在中间加一个getchar();scanf(“%c%c”,&c1,&c2)会读入空格;建议用%s读取字符串,取第一个字符。

4.数组定义int a[10]={0};可以对其全部元素赋值为0;数组太大不要这样,防止CE,全局变量,静态变量自动初始化为0。

5.圆周率=acos(-1.0);自然对数=exp(1.0)。

6.如果要乘或除2^n,用位移运算速度快。a>>n;a<<n。

7.将乘法转换成加法减少时间:log(ab)=log(a)+log(b);将乘法转换成除法防止溢出:a/(bc)=a/b/c。

8.有的题数据范围小但是计算量大可以用打表法,先把结果算出来保存在数组里,要用时直接取出来。

9.浮点数比较时最好控制精度

#define eps 1e-6
fabs(a-b)<eps。

10.INF=0x3f3f3f3f

INF=0x7f7f7f7f

11.各种数据类型的最大值最小值

int类型:INT_MAX,INT_MIN

double类型:DBL_MAX,DBL_MIN

long long类型:

__LONG_LONG_MAX__

LLONG_MIN、LLONG_MAX和ULLONG_MIN,它们分别代表了平台上最小的long long值、最大的long long值,以及最大的unsigned long long值。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

辗转相除法(求最大公约数、扩展欧几里得算法及应用) Previous