1. Lowest Common Multiple Plus 求n个数的最小公倍数。 Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。 Sample Input 2 4 6 3 2 5 7 Sample Output 12 70 该题只要按顺序向每两个求最小公倍数即可,并将所得倍数与下一个数字再进行运算求最小公倍数,循环最终得到所需值。 虽然原题说可以假设最后的输出是一个32位的整数,但是在中间运算过程中,可能会存在溢出问题,例如a * b可能会溢出,因此可以用a / gcd(a, b) * b来代替a * b / gcd(a, b),或者直接将定义long long a, b避免溢出。 //第一种 #include <stdio.h> int gcd(int a, int b){ int x; if(a & 继续阅读 >>


王良 17/07/19 12:26:03
邮箱验证 POJ 注册的时候需要用户输入邮箱,验证邮箱的规则包括: 1)有且仅有一个'@'符号 2)'@'和'.'不能出现在字符串的首和尾 3)'@'之后至少要有一个'.',并且'@'不能和'.'直接相连 满足以上3条的字符串为合法邮箱,否则不合法, 编写程序验证输入是否合法 Input 输入包含若干行,每一行为一个代验证的邮箱地址,长度小于100 Output 每一行输入对应一行输出 如果验证合法,输出 YES 如果验证非法:输出 NO Sample Input .a@b.com pku@edu.cn cs101@gmail.com cs101@gmail Sample Output NO YES YES NO 本题原本不难,结果因为读题及对题意理解不清,导致被卡了很久。 首先说理解误区,原题说的是'@'不能和'.'直接相连,然而只考虑了@.这种相邻的情况,而忽视了。@这种相邻的情况,(实力打脸……)。 剩余的问题就是按照其要求寻找不符合的情况,开始用的 继续阅读 >>


王良 17/07/18 12:29:17
该部分将作为日常学习的总结,内容将会比较杂乱,只有整体上的主题——文件操作。 主要目录的存储内容 /bin 全称binary, 存放普通用户可执行的命令 /boot 存放Linux内核及开机启动的相关文件 /etc 存放系统的配置文件 /usr 存放系统应用程序及相关文件 /tmp 存放临时文件 /sbin 存放管理系统的命令 /lib 存放各种库文件 /dev 存储设备文件 open函数及其参数 1) 头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 2) 参数 O_RDONLY 只读 O_WRONLY 只写 O_RDWR 可读可写 O_CREAT 若文件不存在则建立文件 O_EXCL 若文件已存在,则打开错误 O_TRUNC 若文件存在且可写,则清空文件 creat 继续阅读 >>


王良 17/07/17 21:55:00
在做课设时,因为在windows上写了一个输入密码时屏幕显示为***的函数,但是在移植到linux系统上时却有问题,提示有错误。 上网搜索,有人说getch()函数的头文件是curses.h,还有人说是conio.h, 但是在ubuntu系统中都不能使用,再次搜索发现getch()函数并非c标准库函数,所以可能在其他系统中不支持。 因此找到了getpass()这一函数,实现在linux上密码隐藏输入的问题。其所在头文件为<unistd.h>。 getpass()函数的返回值为所输入字符串的首地址,参数可以为想要在屏幕上显示的提示信息。(看到这里感到很惊奇,在c语言中竟然还有和python中差不多的函数,参数可以是提示信息!!!) 而且该函数同样也支持删除已输入的错误字符的功能,确实减少了编程时的麻烦^_^. 代码如下: #include <stdio.h> #include <unistd.h> int main (void) { char *ch 继续阅读 >>


王良 17/07/04 22:42:37
在c语言期末考试中,再次见到了“小明爬楼梯”问题,而第一次见到是在某次面试题中,由于当时还没有学到递归部分,因此就仅仅把代码看了一下,然而其中包含的思想却没有弄清楚,因此在考试时见到该题一头雾水,因此总结一下,以绝后患。 先上题: 可爱的小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶,有的时候一次爬三个台阶。如果这个楼梯有n个台阶,小明一共有多少种爬法呢? 该题为典型的递归问题,解决的思想当然就要不按常理出牌: 假设当前共有36阶台阶,小明若想到达第36阶台阶,只能选择从第35阶再上1阶,或从第34阶再上2阶,或从第33阶再上3阶,因此要想到达第36阶台阶,需要走的步数为到达之前3级台阶需要的步数之和,即f(n) = f(n-1) + f(n-2) + f(n-3). 示例代码: #include <stdio.h> int f(int n) { if(n == 1) 继续阅读 >>


王良 17/07/03 16:43:06
最近在写实验报告时,由于在机房只能用windows系统,在程序没写完而转战linux时却总是发生出现乱码问题,之前修改几次无果,只好改为英文。今天特地抽出时间来解决这一问题,解决方法如下: 使用iconv命令: iconv -f 原编码 -t 新编码 filename [-o newfile] 使用vim 首先进入vim,以下以文件1.c为例: vim 1.c :set fileencoding //查看文件编码格式 :set fileencoding=utf-8 //修改文件编码为utf-8(linux) :set fileencoding=cp936 //修改文件编码为cp936(windows) 注:linux下默认编码为utf-8, windows下默认编码为cp936 作者:liushall 发表于 2017/06/14 20:16:25 原文链接 http://blog.csdn.ne 继续阅读 >>


王良 17/06/14 20:16:25
今天打开电脑,突然发现之前一直用的很好的搜狗输入法突然炸了,竟然没法输中文,在谷歌了几个解决方法后,终于找到了一个能用的方法。记录下来,已备后用。 解决方法: 关闭搜狗输入法 killall fcitx 删除配置文件 ~/.config //进入搜狗配置文件所在目录 rm -r SogouPY SogouPY.users sogou-qimpanel //删除配置文件 3.重启搜狗即可 作者:liushall 发表于 2017/06/06 21:54:40 原文链接 http://blog.csdn.net/liushall/article/details/72888130 阅读:101 继续阅读 >>


王良 17/06/06 21:54:40
linux兴趣小组2017面试题 1. 分析下列程序的输出. int main(int argc, char *argv[]) { int t = 4; printf("%lu\n", sizeof(t--)); printf("%lu\n", sizeof("ab c\nt\012\xa1*2")); return 0; } 若运行printf(“%d\n”,t); 结果为4,因为sizeof是关键字,且其后面的内容在编译时运算并替换为运算后的数值,在运行程序时直接调用替换值,不再进行t–的运算,故t仍是4. 在进行sizeof运算时,\n、 \012、 \xa1 分别为一个字符,且包含结束符\0. 2. 下面代码会输出什么? int main(int argc, char *argv[]) { int a = 10, b = 20, c = 30; printf("%d %d\n", b = b*c, c = c*2 继续阅读 >>


王良 17/06/03 15:47:43
改变文件属性与权限 chgrp [-R] dirname/filename 改变文件所属用户组 -R 递归更改 chown [-R] 账号名称:组名 dirname/filename 改变文件所有者 chmod 改变文件权限 u=rwx 文件所有者权限为rwx g=rw 所属用户组权限为rw- o=r others权限为r– a+x 所有权限加上x权限(a-x 略) 创建新目录 mkdir [-mp] dirname -m 配置文件案的权限 mkdir -m 711 test 创建权限为rwxr–r–的目录 -p 递归创建目录 删除空目录 rmdir [-p] dirname -p 递归删除目录(必须是空目录) 显示目前所在目录 pwd [-p] -p 显示当前路径,而非使用连接(link)路径,即加-p后显示的时源文件路径,而不是链接文件(类似与快捷方式的路径) 取得路径的文件名与目 继续阅读 >>


王良 17/06/01 23:01:42
vim (Linux下的文本编辑器) a 在光标后添加文本 A 在本行行末添加文本 i 在光标前插入文本 I 在本行开始插入文本 o 在光标下插入新行 O 在光标上插入新行 dd 删除光标所在行 (2dd即删除此下的两行,3dd以此类推) p 粘贴 u 取消上一命令 . 重复上一命令 shift + ‘:’ 进入底行模式 r 替换单个字符(替换模式) R 替换多个字符(替换模式) G 到达最后一行 gg 或 1G 到达第一行 nG 到达第n行 yy 复制一行 nyy 复制n行 set nu 显示行号 q 退出vi编辑器 q! 强制退出vi编辑器 w 保存 wq 保存并退出vi /string 向下搜索字符串string ?string 向上搜索字符串string %s/…/…/g 全文替换文本(g表示全部替换) n1,n2s/…/…/g[c] 只替换n1到n2行的文字(c 代表是否提示替换) 多文件编辑 sp[filename] 进入多文件编辑模式 :n 编辑下一个文件 :N 编辑上一个文件 :files 列出当前vim打开的 继续阅读 >>


王良 17/06/01 20:33:59