读入读出挂!!

说起读入读出挂,体内洪荒之力呼啸飞过,输入输出规模超过 10e6 就可以用啦;

参考博客:https://blog.csdn.net/f_zyj/article/details/51473493

适用于正整数

 1 template <class T>
 2 inline void scan_d(T &ret)
 3 {
 4     char c;
 5     ret = 0;
 6     while ((c = getchar()) < ‘0‘ || c > ‘9‘);
 7     while (c >= ‘0‘ && c <= ‘9‘)
 8     {
 9         ret = ret * 10 + (c - ‘0‘), c = getchar();
10     }
11 }

适用于正负整数

 1 template <class T>
 2 inline bool scan_d(T &ret)
 3 {
 4     char c;
 5     int sgn;
 6     if (c = getchar(), c == EOF)
 7     {
 8         return 0; //EOF
 9     }
10     while (c != ‘-‘ && (c < ‘0‘ || c > ‘9‘))
11     {
12         c = getchar();
13     }
14     sgn = (c == ‘-‘) ? -1 : 1;
15     ret = (c == ‘-‘) ? 0 : (c - ‘0‘);
16     while (c = getchar(), c >= ‘0‘ && c <= ‘9‘)
17     {
18         ret = ret * 10 + (c - ‘0‘);
19     }
20     ret *= sgn;
21     return 1;
22 }
23
24 template <class T>
25 inline void print_d(T x)
26 {
27     if (x > 9)
28     {
29         print_d(x / 10);
30     }
31     putchar(x % 10 + ‘0‘);
32 }

仅适合纯数字输入输出

 1 int Scan()
 2 {   //  输入外挂
 3     int res = 0, flag = 0;
 4     char ch;
 5     if ((ch = getchar()) == ‘-‘)
 6     {
 7         flag = 1;
 8     }
 9     else if(ch >= ‘0‘ && ch <= ‘9‘)
10     {
11         res = ch - ‘0‘;
12     }
13     while ((ch = getchar()) >= ‘0‘ && ch <= ‘9‘)
14     {
15         res = res * 10 + (ch - ‘0‘);
16     }
17     return flag ? -res : res;
18 }
19
20 void Out(int a)
21 {   //  输出外挂
22     if (a < 0)
23     {
24         putchar(‘-‘);
25         a = -a;
26     }
27     if (a >= 10)
28     {
29        Out(a / 10);
30     }
31     putchar(a % 10 + ‘0‘);
32 }
33
34 int main()
35 {
36     int T, n;
37     scanf ("%d", &T);
38     while (T--)
39     {
40         n = Scan();
41         Out(n);
42         printf("\n");
43     }
44     return 0;
45 }

适用于正负数(int,long long,float,double)

 1 template <class T>
 2 bool scan_d(T &ret)
 3 {
 4     char c;
 5     int sgn;
 6     T bit = 0.1;
 7     if (c=getchar(), c==EOF)
 8     {
 9         return 0;
10     }
11     while (c! = ‘-‘ && c != ‘.‘ && (c < ‘0‘ || c > ‘9‘))
12     {
13         c = getchar();
14     }
15     sgn = (c == ‘-‘) ? -1 : 1;
16     ret = (c == ‘-‘) ? 0 : (c - ‘0‘);
17     while (c = getchar(), c >= ‘0‘ && c <= ‘9‘)
18     {
19         ret = ret * 10 + (c - ‘0‘);
20     }
21     if (c == ‘ ‘ || c == ‘\n‘)
22     {
23         ret *= sgn;
24         return 1;
25     }
26     while (c = getchar(), c >= ‘0‘ && c <= ‘9‘)
27     {
28         ret += (c - ‘0‘) * bit, bit /= 10;
29     }
30     ret *= sgn;
31     return 1;
32 }
33
34 template <class T>
35 inline void print_d(int x)
36 {
37     if (x > 9)
38     {
39         print_d(x / 10);
40     }
41     putchar(x % 10 + ‘0‘);
42 }

套装

 1 char buf[MAXIN], *ps = buf, *pe = buf + 1;
 2
 3 inline void rnext()
 4 {
 5     if (++ps == pe)
 6     {
 7         pe = (ps = buf) + fread(buf, sizeof(char), sizeof(buf) / sizeof(char), stdin);
 8     }
 9     return ;
10 }
11
12 template <class T>
13 inline bool in(T &ans)
14 {
15     ans = 0;
16     T f = 1;
17     if (ps == pe)
18     {
19         return false;
20     }
21     do
22     {
23         rnext();
24         if (‘-‘ == *ps)
25         {
26             f = -1;
27         }
28     } while (!isdigit(*ps) && ps != pe);
29     if (ps == pe)
30     {
31         return false;
32     }
33     do
34     {
35         ans = (ans << 1) + (ans << 3) + *ps - 48;
36         rnext();
37     } while (isdigit(*ps) && ps != pe);
38     ans *= f;
39     return true;
40 }
41
42 char bufout[MAXOUT], outtmp[50], *pout = bufout, *pend = bufout + MAXOUT;
43
44 inline void write()
45 {
46     fwrite(bufout, sizeof(char), pout - bufout, stdout);
47     pout = bufout;
48     return ;
49 }
50
51 inline void out_char(char c)
52 {
53     *(pout++) = c;
54     if (pout == pend)
55     {
56         write();
57     }
58     return ;
59 }
60
61 inline void out_str(char *s)
62 {
63     while (*s)
64     {
65         *(pout++) = *(s++);
66         if (pout == pend)
67         {
68             write();
69         }
70     }
71     return ;
72 }
73
74 template <class T>
75 inline void out_int(T x)
76 {
77     if (!x)
78     {
79         out_char(‘0‘);
80         return ;
81     }
82     if (x < 0)
83     {
84         x = -x, out_char(‘-‘);
85     }
86     int len = 0;
87     while (x)
88     {
89         outtmp[len++] = x % 10 + 48;
90         x /= 10;
91     }
92     outtmp[len] = 0;
93     for (int i = 0, j = len - 1; i < j; i++, j--)
94     {
95         swap(outtmp[i], outtmp[j]);
96     }
97     out_str(outtmp);
98     return ;
99 }

更加高效的输入输出外挂

 1 struct FastIO
 2 {
 3     static const int S = 100 << 1;
 4
 5     int wpos;
 6     char wbuf[S];
 7
 8     FastIO() : wpos(0) {}
 9
10     inline int xchar()
11     {
12         static char buf[S];
13         static int len = 0, pos = 0;
14
15         if (pos == len)
16         {
17             pos = 0;
18             len = (int)fread(buf, 1, S, stdin);
19         }
20         if (pos == len)
21         {
22             return -1;
23         }
24
25         return buf[pos++];
26     }
27
28     inline int xint()
29     {
30         int s = 1, c = xchar(), x = 0;
31         while (c <= 32)
32         {
33             c = xchar();
34         }
35         if (c == ‘-‘)
36         {
37             s = -1;
38             c = xchar();
39         }
40         for (; ‘0‘ <= c && c <= ‘9‘; c = xchar())
41         {
42             x = x * 10 + c - ‘0‘;
43         }
44
45         return x * s;
46     }
47
48     ~FastIO()
49     {
50         if (wpos)
51         {
52             fwrite(wbuf, 1, wpos, stdout);
53             wpos = 0;
54         }
55     }
56 } io;

原文地址:https://www.cnblogs.com/liubilan/p/9398460.html

时间: 2024-10-09 09:49:41

读入读出挂!!的相关文章

读入读出挂

正数 1 void re(int &x) 2 { 3 x=0;char s=getchar(); 4 while(s<'0'||s>'9') s=getchar(); 5 while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();} 6 } 7 void wr(int x) 8 { 9 if(x>9) wr(x/10); 10 putchar(x%10+'0'); 11 } 正负 1 void re(int &

神奇的读入读出

A. 文件读入读出: 1 /*文件读入读出*/ 2 3 #include<cstdio> 4 #include<iostream> 5 using namespace std; 6 int main() 7 { 8 freopen("test.in","r",stdin); 9 freopen("test.out","w",stdout); 10 return 0; 11 } 1 /*文件读入读出*/

【转载】MySQL存入图片+Qt读入读出数据库中的图片

/* Time: 2017.01.02 -- 2017.01.04 * Author: WJ * Function:连接数据库,从数据库中读取图片并显示(已成功) */ [参考链接] MySQL存入图片+Qt读入读出数据库中的图片 - lpdpzc的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/lpdpzc/article/details/41915835 [主要代码] void MainWindow::on_ShowImage_clicked() { QS

NIO的原理和文件读入读出及图片拷贝的使用

1.NIO的简介        java.nio 全称 java non-blocking IO 是jdk1.4之后出现的 New IO        为所有的原始类型(boolean除外)提供了缓存支持        使用它 可以提供非阻塞式的高伸缩性网络    NIO由三个核心部分组成        Channel 管道/通道        Buffer 缓冲区        Selector 选择器    普通IO        NIO    面向流        面向缓冲区    阻塞I

python 以文档形式读入读出

对之前的代码总结. python3方法1:文档以.json格式保存在文件夹中,文件夹只有单层,对文件夹中文档进行分个读取(应用见20170525-052501.py) 1 path = r'C:\Users\user\Desktop\heilongjiang.dbw.cn\\' 2 documents = [] 3 num = 0 4 for file in os.listdir(path)[0:]: 5 file = path + file 6 if not file.endswith('.j

double long float类型读入读出 double取模 fmod

The library of fmod is #include <cmath> #include<cstdio> #include<cstdlib> #include<algorithm> #include<map> #include<cstring> #include<cmath> using namespace std; int main(){ double x; long y; long long z; scanf(

[黑科技]市面上不太常见的cin挂和cout挂

CCPC赛后摸鱼搞了个新的奇怪外挂 这里贴上利用sgetn和sputn来实现的读入读出挂,理论上比fread更优 期望在赛中TLE的代码能强行卡过去hhh 利用小规模的Codeforces - 1036D进行测试 96ms version #include<bits/stdc++.h> #define rep(i,j,k) for(int i=j;i<=k;i++) #define rrep(i,j,k) for(int i=j;i>=k;i--) #define println(

C++中的字符串输入输出

转自:https://www.cnblogs.com/zzw1024/p/10502011.html 常见的输入问题:1.直接用cin输入(当然可以使用cout直接输出): 1)string s; cin >> s; //只接收回车键和空格前面所输入的字符!!!!! 一旦输入空格,cin将空格视为回车键,将会将后面的字符赋予后续有输入cin函数的变量中,如下面的a,故一定确保输入无空格!! 2)char a[10]; cin >> a; //同样,只接收回车键和空格前面所输入的字符

单片机模拟电路接口的一些概念

集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路:左边的三极管为反相之用,使输入为"0"时,输出也为"0". 对于图 1,当左端的输入为"0"时,前面的三极管截止,所以5v电源通过1k电阻加到右边的三极管上,右边的三极管导通:当左端的输入为"1"时,前面的三极管导通,而后面的三极管截止. 我们将图1简化成图2的样子,很明显可以看出,当开关闭合时,输出直接接地,所以输出电平为0.而当开关断开时