[ACM] 常数和语言基础

1.数据表示范围

unsigned  int   0~4294967295

int  2147483648~2147483647

unsigned long 0~4294967295

long  2147483648~2147483647

long long的最大值:9223372036854775807

long long的最小值:-9223372036854775808

unsigned long long的最大值:18446744073709551615

__int64的最大值:9223372036854775807

__int64的最小值:-9223372036854775808

unsigned __int64的最大值:18446744073709551615

2. 2的n次方(0<=n<=50)

1 2

2 4

3 8

4 16

5 32

6 64

7 128

8 256

9 512

10 1024

11 2048

12 4096

13 8192

14 16384

15 32768

16 65536

17 131072

18 262144

19 524288

20 1048576

21 2097152

22 4194304

23 8388608

24 16777216

25 33554432

26 67108864

27 134217728

28 268435456

29 536870912

30 1073741824

31 2147483648

32 4294967296

33 8589934592

34 17179869184

35 34359738368

36 68719476736

37 137438953472

38 274877906944

39 549755813888

40 1099511627776

41 2199023255552

42 4398046511104

43 8796093022208

44 17592186044416

45 35184372088832

46 70368744177664

47 140737488355328

48 281474976710656

49 562949953421312

50 1125899906842624

3. 1~10^n之间素数个数(1<=n<=9)


n


1


2


3


4


5


6


7


8


9


10^n


4


25


168


1229


9592


78498


664579


5761455


50847543

4.头文件

#include <iostream>

#include <stdio.h>

#include <algorithm>

#include <string.h>

#include <stdlib.h>

#include <cmath>

#include <iomanip>

#include <vector>

#include <set>

#include <map>

#include <stack>

#include <queue>

#include <cctype>

using namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;//无穷大

int dx[8]={0,0,-1,1,1,1,-1,-1};//八个方向

int dy[8]={1,-1,0,0,-1,1,-1,1};

5.无穷大

对于int类型的数据,如果我们想用一个数来表示无穷大,使得它比输入的所有的数都大,可以选择0x3f3f3f3f 或 0x7fffffff

0x3f3f3f3f 数值为 1061109567

0x7fffffff  数值为2139062143

负无穷大则可以用 -0x3f3f3f3f 或 -0x7fffffff

-0x3f3f3f3f 数值为-1061109567

-0x7fffffff 数值为-2139062143

在题目中常使用 0x3f3f3f3f,因为0x7fffffff 容易越界,定义全局变量

const int inf = 0x3f3f3f3f;

6. memset()初始化

假设定义了以下数组:

int a[10];

double b[10];

bool ok[10];

memset(a, -1, sizeof(a)); //正确,将int型a数组元素初始化为 -1

memset(b, -1, sizeof(b)); //错误,不可以将double型的b数组初始化为 -1

memset(ok, -1, sizeof(ok));//错误,不可以将bool型的ok数组初始化为-1

memset(a, 0, sizeof(a)); //正确,将int型a数组元素初始化为0

memset(b, 0, sizeof(b)); //正确,将double型b数组初始化为 0

memset(ok, 0, sizeof(ok)); //正确,将bool型的ok数组初始化为0

memset(a, 1, sizeof(a)); //错误,不可以将int型a数组元素初始化为0

memset(b, 1, sizeof(b)); //错误,不可以将double型b数组初始化为 0

memset(ok,1, sizeof(ok)); //正确,可以将bool型的ok数组初始化为1

对于无穷大的初始化:

const int inf = 0x3f3f3f3f;

const int INF = 0x7fffffff;

memset(a, inf, sizeof(a)); //正确

memset(a, INF, sieof(a)); //错误

对于int型数组a可以用0x3f3f3f3f初始化,但不可以用0x7fffffff,如果非要把a数组初始化为0x7ffffff,可以用语句 fill(a, a+n, INF); //n为元素个数

7.π的表示

方法1:const double PI = 3.1415926535898;

方法2:#define PI acos(-1)

建议使用方法2

8.随机数

srand(time(0)); //根据系统时间设置随机数种子

int i = rand() % N; //生成区间[0,N)的整数

9.浮点数比较

f(fabs(tp1-tp2)<=1e-11)

cout<<"="<<endl;

else if(tp1>tp2)

cout<<">"<<endl;

else

cout<<"<"<<endl;

10.输入输出

①int, double

int a;

double b;

输入:

cin>>a; 或 scanf("%d",&a);

cin>>b; 或 scanf("%lf",&b);

输出:

cout<<a; 或 printf(“%d”,a);

cout<<b; 或 printf("%.5f",b);//后者是输出5位小数,固定格式

②char

char ch;

输入: cin>>ch; 或scanf("%c",&ch);

scanf("%c",&ch); 不常用,容易出错,比如下面的例子:

cin>>ch;

cout<<ch<<endl;

scanf("%c",&ch);

cout<<ch<<endl;

上面四句话,运行结果第二个cout输出的不是我们原来输入的字符,因为如果第一次输入字符后,按了回车,那么第二次输入的就是回车,也就是scanf("%c",&ch);把回车吸收了。所以如果要正确使用,要在中间加上一句getchar();

cin>>ch;

cout<<ch<<endl;

getchar();

scanf("%c",&ch);

cout<<ch<<endl;

对于字符数组 char chs[10];

输入: cin>>chs; 或scanf("%s",chs);

注意:用字符数组存放字符串时,如果一个字符串中存在空格,cin>>chs;不可以存空格

gets(chs);可以存空格.

③string

string str;

输入:cin>>str;  或getline(cin,str);

前者不可以存放带有空格的字符串,后者可以。

④混合技巧型

011

101

110

输入如上,每一行的三个数是连续的,要想分开存入矩阵中,读入用scanf(“%1d”, &num);

12:08:30

输入如上,假设这是一个时间,那么我们想要在输入的时候就单独获取时分秒,可以用

scanf("%d:%d:%d",&h,&m,&s);

⑤快速读入(正负)

即输入字符转换成数字,效率高,在输入数据量特别大的时候采用快速读入可以避免超时.

inline int read()

{

char ch=getchar();int x=0,f=1;

while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();}

while(ch<=‘9‘&&ch>=‘0‘){x=x*10+ch-‘0‘;ch=getchar();}

return x*f;

}

使用:

int num;

num = read(); //输入num

时间: 2024-08-05 17:28:39

[ACM] 常数和语言基础的相关文章

VBA 语言基础

VBA 语言基础 第一节 标识符 一.定义 标识符是一种标识变量.常量.过程.函数.类等语言构成单位的符号,利用它可以完成对变量.常量.过程.函数.类等的引用. 二.命名规则 1) 字母打头,由字母.数字和下划线组成,如 A987b_23Abc 2) 字符长度小于40,(Excel2002 以上中文版等,可以用汉字且长度可达254 个字符) 3) 不能与VB 保留字重名,如public, private, dim, goto, next, with, integer, single等 第二节 运

MiS603 开发板2.2 Verilog HDL硬件语言基础

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ 2.2 Verilog HDL硬件语言基础 2.2.1 技术背景 大规模集成电路设计制造技术和数字信号处理技术,近三十年来,各自得到了迅

mbed 程序的语言基础

mBed程序采用C++进行编写,并在此基础上添加了一些自定义的函数和常量,所以我们在这有必要简单地了解一下相应的语言基础. 常量 常量是在程序运算过程中不变的量,常量在程序中经常直接出现,如数字1768:字符‘m’:字符串“mbed”等,此时只要求它们符合相应类型数据的表示方法.相应于各种数据类型,有整型常量.浮点型常量.字符型常量及字符串常量.有时为了代码编写的方便,我们会用一个标识符来代表一个常量,通过宏定义预处理指令来实现,这就是常量定义,格式如下:#define 标识符常量 由用户命名的

单片机教程4.C语言基础以及流水灯的实现

单片机教程4.C语言基础以及流水灯的实现 C语言,没接触过计算机编程语言的人会把它看的很神秘,感觉非常的难,而在我看来,C语言的逻辑和运算,就是小学水平,所以大家不要怕它,我尽可能的从小学数学逻辑方式带着大家学习C语言. 1.1 二进制.十进制和十六进制 看似很简单的东西,但是从同学们学习视频的情况来看,很多同学不能彻底明白.这里先简单介绍一些注意事项,然后还是从实验中讲解会比较深刻. 1.十进制就不多说了,逢十进位,一个位有十个值:0-9,我们的生活中到处都是它的身影.二进制就是逢二进位,它的

Object Pascal 语法之语言基础(二)

1.5 数据类型与定义变量 Object Pascal 语言的最大特点是对数据类型的要求非常严谨.传递给过程或函数的参数值必须与形参的类型一致.在Object Pascal 语言中不会看到像C 语言编译器提示的“可疑的指针转换”等警告信息.由于Object Pascal 语言对数据类型比较严谨,因此它会对代码进行严格检查,以确保不会出现错误.变量是程序代码中代表一个内存地址的标识符,那么该地址的内存内容就可以在程序代码执行时被改变.每个变量都有一个名字和数据类型,名字可以用来引用变量,数据类型决

Object Pascal 语法之语言基础(四)

1.8 过程与函数 过程与函数是实现一定功能的语句块,是程序中的特定功能单元.可以在程序的其他地方被调用,也可以进行递归调用.过程与函数的区别在于过程没有返回值,而函数有返回值. 1.过程与函数的定义过程与函数的定义包括过程原型或函数原型.过程体或函数体的定义.过程定义的形式如下: procedure ProcedureName(ParameterList); directives; var LocalDeclarations; begin statements end; ProcedureNa

C语言基础学习笔记

--C语言框架-- 数据  字节byte          字符   char         8  半字half word     短整型        short int    16    字word            整型   int(integer)   32               长整型   long int     32                 单精度   float        32   双字(double word) 双精度  double       64 

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第1/5套:SQL语言之基础入门及环境准备.主要学习Oracle数据库SQL语言基础介绍.PL/SQL语言介绍.数据库SQL对象与数据类型介绍.SQL语言实战环境准备等. Oracle SQL语言之基础及环境准备,课程内容详细如下: Oracle数据库SQL语言基础介绍Oracle数据

Swift语言指南(一)--语言基础之常量和变量

Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String. Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合类型)Collection Types. 与 C 语言类