查看“︁01-基础语法/09-常见小技巧”︁的源代码
←
01-基础语法/09-常见小技巧
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
=== 交换两个变量的值 === <syntaxhighlight lang="cpp"> swap(a, b); </syntaxhighlight> === 最大公因数与最小公倍数 === 比赛时允许使用 C++ 自带的 <code>__gcd(a, b)</code> 函数求最大公因数。 手写版本: <syntaxhighlight lang="cpp"> int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } int lcm(int a, int b) { return a / gcd(a, b) * b; } </syntaxhighlight> === 数组大小计算 === <syntaxhighlight lang="cpp"> int a[100]; int n = sizeof(a) / sizeof(a[0]); // n = 100 </syntaxhighlight> === 常见常量定义 === <syntaxhighlight lang="cpp"> const int MOD = 1000000007; // 常用模数 const int INF = 0x3f3f3f3f; // 常用无穷大 const long long INFLL = 0x3f3f3f3f3f3f3f3f; // long long 无穷大 </syntaxhighlight> <code>0x3f3f3f3f</code> 的好处:乘以 <math>2</math> 不会爆 <code>int</code>,且 <code>memset(a, 0x3f, sizeof(a))</code> 可以直接把每个元素初始化为它。 === <code>memset</code> 初始化数组 === <syntaxhighlight lang="cpp"> #include <cstring> int a[100]; memset(a, 0, sizeof(a)); // 全部初始化为 0 memset(a, -1, sizeof(a)); // 全部初始化为 -1 memset(a, 0x3f, sizeof(a)); // 全部初始化为 INF </syntaxhighlight> 注意:<code>memset</code> 按'''字节'''赋值,所以只能用于 <math>0</math>、<math>-1</math>、<code>0x3f</code> 等每字节相同的值。 === 防止爆 <code>int</code> === - 计算过程中随时注意结果是否会超过 <math>2\times 10^9</math> - 使用 <code>1LL * a * b</code> 进行 <code>long long</code> 乘法 - 在需要的地方使用 <code>#define int long long</code> === 调试小技巧 === <syntaxhighlight lang="cpp"> // 在代码中使用 cerr 输出调试信息(不会影响 OJ 评判) cerr << "debug: a = " << a << "\n"; // 输出当前行号 cerr << __LINE__ << "\n"; // 可以用 if 包裹,方便最后一起删除 if (false) cerr << "debug: " << x << "\n"; </syntaxhighlight> [[Category:基础语法]] [[Category:三三文档]]
返回
01-基础语法/09-常见小技巧
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息