功能介绍

写了I/O函数,支持以下几种方式

 read(num);    //读入一个数num(任意整数类型,下同)
read(num1,num2,num3,num4); //读入任意多个数
read(arr,n); //对一个整数数组arr读入n个值,[0,n-1]
read(arr,first,last); //对一个整数数组arr读入区间last-first+1个值,[first,last]
read(s); //读入一个字符串数组(string和char数组都支持)
print(num); //输出一个数num
print(num1,num2,num3,num4); //输出任意多个数,中间用空格隔开
print(arr,n); //对一个整数数组arr输出n个值,[0,n-1],中间用空格隔开
print(arr,first,last); //对一个整数数组arr输出last-first+1个值,[first,last],中间用空格隔开
10 //read()有返回值,遇到EOF返回0。多组数据时可以放心使用while(read(n)){}
//至于字符串的输出没有进行优化,测试显示直接cout或者printf比较快

关于define nc getchar,是因为用到了fread,本地调试时候请不要注释,否则无法从键盘读入数据,提交时注释这句话即可。

支持以下几个函数

 gcd(a,b); //求两数gcd(任意整数类型,下同)
lowbit(x); //求一个整数的lowbit
mishu(x); //判断一个数是不是2的幂
q_mul(a,b,p); //求(a*b)%p的值,防止溢出,O(logN)
f_mul(a,b,p); //求(a*b)%p的值,防止溢出,O(1),可能丢失精度
q_pow(a,b,p); //求(a^b)%p的值,不防溢出,O(logN)
s_pow(a,b,p); //求(a^b)%p的值,防溢出,O(logN*logN)
ex_gcd(a,b,x,y); //扩展GCD
com(m,n); //求C(m,n)
isprime(num); //判断一个数是否质数

其他一些宏定义自行查看即可了解,大部分的东西我都尽可能的进行了优化,之前有个很冗长的,现在修改成这样了,基本也就是最终版本。

 //XDDDDDDi
#include <bits/stdc++.h>
using namespace std;
#define PB push_back
#define MT make_tuple
#define MP make_pair
#define pii pair<int,int>
#define pdd pair<double,double>
#define F first
#define S second #define MOD 1000000007
#define PI (acos(-1.0))
#define EPS 1e-6
#define MMT(s,a) memset(s, a, sizeof s)
#define GO(i,a,b) for(int i = (a); i < (b); ++i)
#define GOE(i,a,b) for(int i = (a); i <= (b); ++i)
#define OG(i,a,b) for(int i = (a); i > (b); --i)
#define OGE(i,a,b) for(int i = (a); i >= (b); --i) typedef unsigned long long ull;
typedef long long ll;
typedef double db;
typedef long double ldb;
typedef stringstream sstm;
int fx[][] = {{,},{-,},{,},{,-},{,},{,-},{-,-},{-,}}; template<typename T> using maxHeap = priority_queue<T, vector<T>, less<T> >;
template<typename T> using minHeap = priority_queue<T, vector<T>, greater<T> >; inline char nc(){ static char buf[], *p1 = buf, *p2 = buf; return p1 == p2 && (p2 = (p1 = buf) + fread(buf,,,stdin),p1 == p2) ? EOF : *p1++; }
#define nc getchar
template<typename T> inline int read(T& sum){ char ch = nc(); if(ch == EOF || ch == -) return ; int tf = ; sum = ; while((ch < '' || ch > '') && (ch != '-')) ch = nc(); tf = ((ch == '-') && (ch = nc())); while(ch >= '' && ch <= '') sum = sum* + (ch-), ch = nc(); (tf) && (sum = -sum); return ; }
template<typename T,typename... Arg> inline int read(T& sum,Arg&... args){ int ret = read(sum); if(!ret) return ; return read(args...); }
template<typename T1,typename T2> inline void read(T1* a,T2 num){ for(int i = ; i < num; i++){read(a[i]);} }
template<typename T1,typename T2> inline void read(T1* a,T2 bn,T2 ed){ for(;bn <= ed; bn++){read(a[bn]);} }
inline void read(char* s){ char ch = nc(); int num = ; while(ch != ' ' && ch != '\n' && ch != '\r' && ch != EOF){s[num++] = ch;ch = nc();} s[num] = '\0'; }
inline void read(string& s){ static char tp[]; char ch = nc(); int num = ; while(ch != ' ' && ch != '\n' && ch != '\r' && ch != EOF){tp[num++] = ch;ch = nc();} tp[num] = '\0'; s = (string)tp; }
template<typename T> inline void print(T k){ int num = ,ch[]; if(k == ){ putchar(''); return ; } (k<)&&(putchar('-'),k = -k); while(k>) ch[++num] = k%, k /= ; while(num) putchar(ch[num--]+); }
template<typename T,typename... Arg> inline void print(T k,Arg... args){ print(k),putchar(' '); print(args...);}
template<typename T1,typename T2> inline void print(T1* a,T2 num){ print(a[]); for(int i = ; i < num; i++){putchar(' '),print(a[i]);} }
template<typename T1,typename T2> inline void print(T1* a,T2 bn,T2 ed){ print(a[bn++]); for(;bn <= ed; bn++){putchar(' '),print(a[bn]);} }
/*math*/
template<typename T> inline T gcd(T a, T b){ return b== ? a : gcd(b,a%b); }
template<typename T> inline T lowbit(T x){ return x&(-x); }
template<typename T> inline bool mishu(T x){ return x>?(x&(x-))==:false; }
template<typename T1,typename T2, typename T3> inline ll q_mul(T1 a,T2 b,T3 p){ ll w = ; while(b){ if(b&) w = (w+a)%p; b>>=; a = (a+a)%p; } return w; }
template<typename T,typename T2> inline ll f_mul(T a,T b,T2 p){ return (a*b - (ll)((long double)a/p*b)*p+p)%p; }
template<typename T1,typename T2, typename T3> inline ll q_pow(T1 a,T2 b,T3 p){ ll w = ; while(b){ if(b&) w = (w*a)%p; b>>=; a = (a*a)%p;} return w; }
template<typename T1,typename T2, typename T3> inline ll s_pow(T1 a,T2 b,T3 p){ ll w = ; while(b){ if(b&) w = q_mul(w,a,p); b>>=; a = q_mul(a,a,p);} return w; }
template<typename T> inline ll ex_gcd(T a, T b, T& x, T& y){ if(b == ){ x = , y = ; return (ll)a; } ll r = exgcd(b,a%b,y,x); y -= a/b*x; return r;/*gcd*/ }
template<typename T1,typename T2> inline ll com(T1 m, T2 n) { int k = ;ll ans = ; while(k <= n){ ans=((m-k+)*ans)/k;k++;} return ans; }
template<typename T> inline bool isprime(T n){ if(n <= ) return n>; if(n% != && n% != ) return ; T n_s = floor(sqrt((db)(n))); for(int i = ; i <= n_s; i += ){ if(n%i == || n%(i+) == ) return ; } return ; }
/* ----------------------------------------------------------------------------------------------------------------------------------------------------------------- */ int main() { return ;
}

ACM代码模板的更多相关文章

  1. ACM、OI、OJ题目常用代码模板

    仓库源码地址:https://github.com/richenyunqi/code-templates 本仓库主要提供 ACM.OI.OJ.PAT.CSP 题目中常见算法和数据结构的实现,它们都以基 ...

  2. 关于ACM,关于CSU

    原文地址:http://tieba.baidu.com/p/2432943599 前言: 即将进入研二,ACM的事情也渐渐远去,记忆终将模糊,但那段奋斗永远让人热血沸腾.开个贴讲讲ACM与中南的故事, ...

  3. 制作代码模板的 LaTex 模板

    Tex 真的是一个用起来非常舒服的排版工具(对于排版要求高的人来说),去比赛前一天放弃了markdown转pdf来生成代码模板,现学Tex(其实美赛已经用过了:P). 推荐一个链接:TeX - Bea ...

  4. 2079 ACM 选课时间 背包 或 母函数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2079 题意:同样的学分 ,有多少种组合数,注意同样学分,课程没有区别 思路:两种方法 背包 母函数 背包: ...

  5. 「浙江理工大学ACM入队200题系列」问题 E: 零基础学C/C++78——求奇数的乘积

    本题是浙江理工大学ACM入队200题第八套中的E题 我们先来看一下这题的题面. 题面 输入 输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你 ...

  6. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  7. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  8. acm结束了

    最后一场比赛打完了.之前为了记录一些题目,开了这个博客,现在结束了acm,这个博客之后也不再更新了. 大家继续加油!

  9. 关于ACM的总结

    看了不少大神的退役帖,今天终于要本弱装一波逼祭奠一下我关于ACM的回忆. 从大二上开始接触到大三下结束,接近两年的时间,对于大神们来说两年的确算不上时间,然而对于本弱来说就是大学的一半时光.大一的懵懂 ...

随机推荐

  1. Jedis的配置和优化

    参数名:maxTotal 含义:资源池最大连接数 [默认值:8] 使用建议:需要考虑以下几点 1.业务希望的Redis并发量 2.客户端执行命令时间 3.Redis资源:例如应用个数(客户端)* ma ...

  2. spring-boot-plus集成Spring Boot Admin管理和监控应用(十一)

    spring-boot-plus集成Spring Boot Admin管理和监控应用 spring boot admin Spring Boot Admin用来管理和监控Spring Boot应用程序 ...

  3. linux系统破解密码。

    Linux系统Centos7及RedHat7破解密码 步骤如下: 1.开机之后按"e"键 2.找到以linux16的开头的行在行尾添加 rd.break console=tty0 ...

  4. Mbatis是什么?怎么运行?

    一   .    Mybatis是什么? Mybatis是一个持久层框架,其中编写的过程中sql语句是需要程序员自己去编写,Mybatis也有 一些映射(输入参数映射,输出参数映射),Mybatis是 ...

  5. Docker搭建Zookeeper&Kafka集群

    最近在学习Kafka,准备测试集群状态的时候感觉无论是开三台虚拟机或者在一台虚拟机开辟三个不同的端口号都太麻烦了(嗯..主要是懒). 环境准备 一台可以上网且有CentOS7虚拟机的电脑 为什么使用虚 ...

  6. INSERT: 批量插入结果集方式

    INSERT: 批量插入结果集 insert into table select x,y from A UNION select z,k from B ; insert into table sele ...

  7. Liunx学习总结(五)--包管理

    包管理简介 Linux 上的应用程序一般是以源码形式或者编译后的二进制格式提供给用户使用.对于以源码形式提供的应用程序,用户需要借助于编译器,自行编译成二进制格式才能使用.而即便是编译后的二进制包,用 ...

  8. Leetcode之二分法专题-744. 寻找比目标字母大的最小字母(Find Smallest Letter Greater Than Target)

    Leetcode之二分法专题-744. 寻找比目标字母大的最小字母(Find Smallest Letter Greater Than Target) 给定一个只包含小写字母的有序数组letters  ...

  9. 2016 ACM-ICPC 青岛站网络赛G题 题解

    [参考博客][https://blog.csdn.net/Tawn0000/article/details/82255682] 题意: 将n个数按照每k个一组来合并,合并需要花费的cost是两个数的长 ...

  10. Linux网络配置(10)

    Linux网络配置原理图(NAT模式) 查看网络IP和网关: CentOS7:ip addr CentOS6:ifconfig Ping测试主机之间网络的连通性:ping [www.baidu.com ...