getchar

$$\\sum_{i=0}^{2^{n}}{lowbit(i)} $$

泄露秘密 提交于 2019-12-04 18:25:01
求 \[\sum_{i=0}^{2^{n}}{lowbit(i)} \] \((n≤10^{18})\) 答案对998244353取模 lowbit 首先数组数组里经常出现的lowit函数 对于lowbit 给定非负整数n。记lowbit(x)为x的二进制表示下最低位的1所对应的值 比如 lowbit(1),1的二进制位1,最低为对应的是1 lowbit(3),3的二进制为11,最低位对应的是1 lowbit(4),4的二进制为100,最低位对应的是4 一般来说2^n的lowbit为本身,奇数的lowbit为1 比如n=2 \(\sum_{i=0}^{2^{n}}{lowbit(i)}\\ = \sum_{i=0}^{4}{lowbit(i)}\\ = lowbit(0) + lowbit(1)+ lowbit(2)+ lowbit(3)+ lowbit(4)\) 而对于 \(lowbit(0)=0,lowbit(2^{n})=2^{n}\) 而对于 \(2^{n}有2^{n-1}个奇数\) 所以式子变成了求 \(lowbit(2) + lowbit(4) +lowbit(6).....+lowbit(2^{n-1})+2^{n}+2^{n-1}\) \(令x=lowbit(2) + lowbit(4) +lowbit(6).....+lowbit(2^{n-1})\) 打表

大小端

耗尽温柔 提交于 2019-12-04 18:05:53
#include <stdio.h> int main() { union{ short s; char c[sizeof(short)]; }un; un.s = 0x0102; if (sizeof(short) == 2) { if (un.c[0] == 1 && un.c[1] == 2) printf("big-endian\n"); else if (un.c[0] == 2 && un.c[1] == 1) printf("little-endian\n"); } getchar(); return 0; } 来源: https://www.cnblogs.com/zzyoucan/p/11876733.html

getchar、scanf以及缓冲区的概念

佐手、 提交于 2019-12-04 17:58:32
1、getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。 getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符,getchar带有回显。 与前面两个函数的区别在于: getchar()函数等待输入直到按回车才结束(前提是缓冲区没有数据),回车前的所有输入字符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。 1 #include "stdio.h" 2 #include "stdlib.h" 3 int main ( void ) 4 { 5 char c; 6 while ((c = getchar()) != '\n' ) //每个getchar()依次读入一个字符 7 printf( "%c" ,c); //按照原样输出 8 printf( " \n " ); 9 system( "pause" ); 10 return 0 ; 11 } 程序运行时,首先停下来,等你输入一串字符串,输入完毕后,它把你输入的整个字符串都输出来了,咦,你不是说getchar()只返回第一个字符么,这里怎么? 因为我们输入的字符串并不是取了第一个字符就把剩下的字符串丢掉了,它还在我们的内存中,好比,开闸放水,我们把水放到闸里去以后,开一次闸就放掉一点

《啊哈算法》读后总结(上)

心已入冬 提交于 2019-12-04 16:05:26
阅读时间 :2019.10.31-2019.11.11 阅读心得 : 这本书早有耳闻,但是一直没有落实去看,最近在给自己充电,于是把这本书看了一遍。总体来说,这本书写得很生动有趣,比较适合零基础的人入门,对于我来说内容有些简单(因为我本科已经接触过一些算法,里面的有些内容我之前已经掌握)。但是,这本书除了算法之外,带给我最大的帮助就是更加熟悉了一点C,因为我的C语言不太好,一直都是学习java,比较逃避C,但是在学习这本书的时候,我把里面出现的所有代码都自己消化并手写了一遍,虽然里面的代码十分浅显,但是一本书写下来,我已经对C没有那么恐惧了。所以,我从心里很喜欢这本书。希望想要入门的小伙伴也能把这本书好好看一看。 阅读总结 : 【这本书一共有九章,第九章是一个思路引领,前八章是妥妥的干货。在这里我对这本书的内容,结合自己的理解做一些记录,方便日后能够复习】 第一章:排序 (有多重要大家心里都知道,不会排序的人生是不完整的人生~) 1.桶排序 说实话,我是在这本书里第一次接触桶排序,之前学的排序算法上来都是直接选择、插入、快速、合并,看了这本书才知道还有桶排序这个神奇宝贝哈哈哈。桶排序堪称最快最简单的排序,它的原理是定义一个数组book[]来标记数字是否出现。比如我们现在要对从1到99之间的若干数字进行排序,那么就定义一个数组book[],每出现一个数字 i,就让对应的book[i

【OI】快读

♀尐吖头ヾ 提交于 2019-12-04 16:04:31
不必多说。 #include <cstdio> #include <cstring> int read(){ int x = 0,f = 1; char c = getchar(); while(c < '0' || c > '9') { if(c == '-') f = -1; c = getchar(); } while(c>= '0' && c<= '9'){ x = x*10 + c-'0'; c = getchar(); } return x*f; } int main() { for(int i = 1; i <= 5; i ++){ int x = read(); printf("%d",x); } return 0; } View Code 来源: https://www.cnblogs.com/dudujerry/p/11872823.html

[HDU2462] The Luckiest number [2008 Asia Hefei Regional Contest Online G]

谁说胖子不能爱 提交于 2019-12-04 15:45:28
题意 给定一个数,求这个数的某一个倍数的长度,其中,倍数的每一位都是8 题解 ( 10 x − 1 ) ∗ 8 / 9 ≡ 0 ( mod L ) //--> ( 10 x − 1 ) ∗ 8 ≡ 0 ( mod 9 L ) //--> 10 x − 1 ≡ 0 ( mod 9 L / g c d ( 9 L , 8 ) ) //--> 10 x ≡ 1 ( mod 9 L / g c d ( 9 L , 8 ) ) //--> 欧拉定理,也称费马-欧拉定理。 若 n //--> , a //--> 为正整数,且 n //--> , a //--> 互素,即 g c d ( a , n ) = 1 //--> ,则 a ϕ ( n ) ≡ 1 ( mod n ) //--> 令 n = 9 L / g c d ( 9 L , 8 ) //--> ,如果 ( g c d ( 10 , n ) > 1 ) //--> a n s = 0 //--> 否则 x | ϕ ( n ) //--> ,枚举出一个符合要求的 x //--> 即可 代码 /****************************************\ * Author : ztx * Title : G - The Luckiest number * ALG : 欧拉定理 * CMT : (10^x-1)*8

C语言I作业08

佐手、 提交于 2019-12-04 14:25:17
第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/9979| 我在这个课程的目标是 学习do-while,while语句。 这个作业在那个具体方面帮助我实现目标 使用循环语句处理循环的题目 参考文献 C语言程序设计,百度 1.PTA实验作业 1.1 题目名1 7-3 jmu-c-二进制转10进制 输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input! 输入样例1: 11111111 输出样例1: 255 输入样例2: 34 输出样例2: error input! 1.1.1数据处理 数据表达:char定义字符 char ch ,int整型定义变量 int sum=0 。 数据处理: 开始 sum←0 while ch=getchar()='\n' do IF ch=='1' THEN do sum←sum*2+1 ELSE ch=='0' THEN sum←sum*2+0 ELSE 输出error input! END IF 结束 不满足条件 输出sum 结束 1.1.2实验代码截图 1.1.3 造测试数据 输入数据

C语言I博客作业08

旧城冷巷雨未停 提交于 2019-12-04 14:02:11
这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 http://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9976 我在这个课程的目标是 掌握while语句用法 这个作业在那个具体方面帮助我实现目标 进一步熟悉了while和do-while用法 参考文献 百度百科、primer plus 1.PTA实验作业 1.1题目名:爬动的蠕虫 一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井? 1.1.1数据处理 数据表达:定义整形变量N,U,D,L 数据处理:定义N,U,D,L 0赋值给L,t 输入N,U,D; while(L<N寸){ L=L+U; t++; if(L>=N寸) 跳出循环; else L=L-D; t++;。 } printf("输出蠕虫到井口总时间"); 程序结束; 1.1.2实验代码截图 1.1.3 造测试数据 数据输入 数据输出 说明 12 3 1 11 输入样例 1 1 1 1 输入较小数据 20 10 5 5 输入较大数据 1.1.4 PTA提交列表及说明 部分正确:没能考虑到只要头过就算到顶的条件所以公式L=N不正确 解决办法:重新读题目

模板汇总

别说谁变了你拦得住时间么 提交于 2019-12-04 14:00:30
模板汇总 也许是中学生涯最后一次打板子了呀... KMP模式匹配 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N = 1000005; char a[N], b[N]; int a1, b1, Next[N]; int main(){ cin >> a + 1; cin >> b + 1; a1 = strlen(a + 1); b1 = strlen(b + 1); Next[1] = 0; for(int i = 2, j = 0; i <= b1; i++){ while( j > 0 && b[j + 1] != b[i] ) j = Next[j]; if( b[i] == b[j + 1] ) j++; Next[i] = j; } for(int i = 1, j = 0; i <= a1; i++){ while( j > 0 && a[i] != b[j + 1]) j = Next[j]; if(a[i] == b[j + 1]) j++; if(j == b1) { cout << i - j + 1 <<"\n"; j = Next[j]; } } for(int i = 1; i <= b1; i++) cout << Next[i

概率专题·期望

浪尽此生 提交于 2019-12-04 13:57:19
uva 11021 Tribbles UVA 11722 Joining with Friend UVA 11427 Expect the Expected UVA 11762 Race to 1 UVA 10491 So you want to be a 2n-aire UVA 11346 Probability UVA 11637 Garbage Remembering Exam UVA 11605 Lights inside a 3d Grid UVA 10491 Cows and Cars UVA 1413 Game UVA 1498 Activation uva 11021 Tribbles k只麻球,每活一天就会死亡,但第二天可能会生一些麻球,具体说来,生i个麻球的概率为pi ,求m天后所有麻球都死亡的概率 f i = p 0 + p 1 f i − 1 + p 2 f i − 2 2 + . . . + p n − 1 f i − 1 n − 1 //--> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<functional> #include<iostream> #include<cmath> #include<cctype> #include