- 博客(17)
- 收藏
- 关注
原创 解释为什么用gets()会少输入一行字符串就能输出结果
while(cin>>n) 或者while(scanf('%d',&n) for(int i=0;i { gets(s)或者 getline(cin,s); }对于c语言的输入:那一行中把scanf("%s",a[i])改成gets(a[i])是完全没有问题的,在输入不带间隔的字符串时是完全等价的。若输入有间隔的字符串,那么gets(a[i])能
2013-11-11 22:39:38
2244
原创 oj1104
#include #include#include#includeusing namespace std;int a0,a1,p,q,k;struct rec{ int a[2][2];};rec f(rec aa,rec bb){ rec ret; ret.a[0][0]=(aa.a[0][0]*bb.a[0][0]+aa.a
2013-11-05 15:01:19
615
转载 矩阵快速幂模
print?#include #include #include #include using namespace std; #define MAXN 12 #define M 9973 typedef struct { int m[MAXN][MAXN]; }Matrix; Matrix a, per; int n; vo
2013-11-05 15:00:22
588
转载 矩阵快速幂
矩阵的快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度,降到log(n)。这里先对原理(主要运用了矩阵乘法的结合律)做下简单形象的介绍:一般一个矩阵的n次方,我们会通过连乘n-1次来得到它的n次幂。但做下简单的改进就能减少连乘的次数,方法如下:把n个矩阵进行两两分组,比如:A*A*A*A*A*A => (A*A)*(A*A)*(A*A)这样变的好处是,你只需要
2013-11-05 14:59:33
480
原创 oj整除和商的问题1104
#include#includeusing namespace std;int main( ){int n,a,m,x;int res[10010];while(cin>>n>>a){ int flag=0; int i, j; memset(res, 0, sizeof(res));
2013-11-04 21:15:01
635
原创 表达式计算的问题
本算法巧妙地利用了c语言中的scanf,逐个对参加运算的数字和运算符进行输入。 #includeusing namespace std;int main( ){ int k,i,j,a[100];char x; while(scanf("%d",&k)!=EOF) { i=0; a[0]=0; a[++i]=k; while((scan
2013-10-31 16:59:05
598
原创 oj1125题
题目描述: 已知正整数k满足2输入: 若干个非负整数c,c的位数每行一个c,当c=-1时中止(不要对-1进行计算!)输出: 每一个c的结果占一行1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。2) 若没有这样的k则输出"none" #include#includeusin
2013-10-31 15:36:32
738
原创 字符串的输入
说明:strlen函数返回的是字符串的长度,并不包括字符串结束符,在获得字符串长度上必须加1以便在动态分配是预留结束符的存储空间。 数组的元素个数 n=sizeof(a)/sizeof(a[0]); c语言中:1 用scanf进行输入int main( ){char a[100]; scanf("%s",&a);//用scanf进行输入,在输入时遇到空格'
2013-10-30 21:34:53
866
原创 求大数的约数个数问题
在求数字的约数的个数时,往往会用for语句实现1-n之间所有的数进行取余数从而判断是不是余数,若是,则加1,这算法行得通,但在oj平台上提交时必定会超时,因为随着n的增大,for循环语句所用的时间会越来越长。。。。 下面的程序是:判断1到根号n之间,n的约数个数,从而来确定1到n之间n的约数个数; #include#include#includeusing
2013-10-24 10:00:41
1270
原创 大数n的阶乘
#include {当输入的n的值很大时,很难有存储的结构,就把这个大数在形成的过程中,将它的各个位都分离出来,分 别保存在一个数组中,这样就可以存储了。}#includeusing namespace std;int res[10010];int main(){ int n; while (cin>>n
2013-10-23 21:41:26
448
原创 循环的取大数的各个位数,存入数组中
while(n!=0) { a[m++]=n%10; n=(n-a[m-1])/10; } 将大数n的各个位数取出来,存放到数组a中,低位放在低下标处
2013-10-23 21:40:35
628
原创 简单的0-1背包问题
#include#includeusing namespace std;int max(int a,int b){ if(a>b) return a;else return b;}int main( ){int N,T;int v[101]; int w[101]; int f[1001]; int i,j; while(
2013-10-09 18:29:15
492
原创 将字符数字转换为整型数字
#includeusing namespace std;#includeint main( ){string a;cin>>a;int* b=new int[a.size( )]for(string::size_type i=0;ib[i]=a[i]-'0';/*将字符型的数字转换成整型的*/return 0;}总结:将字符数字减去0字符就得到整型的数字
2013-09-27 20:54:11
1006
原创 最大公约数和最小公倍数
求解最大公约数用的是欧几里得的辗转相除法。例如,求(319,377):∵ 377÷319=1(余58)∴(377,319)=(319,58);∵ 319÷58=5(余29),∴ (319,58)=(58,29);∵ 58÷29=2(余0),∴ (58,29)= 29;∴ (319,377)=2inc
2013-09-26 22:15:19
476
转载 sort函数的用法
sort函数包含在头文件#include 中1 .默认的sort函数是按升序排。 sort(a,a+n); //两个参数分别为待排序数组的首地址和尾地址,或者可以首尾指针。又如:vector::iterator iter1=v.begin( ); vector::iterator iter2=v.begin( );sort(iter1,i
2013-09-25 12:49:18
519
转载 动态分配和释放二维数组
#include using namespace std;int main(int argc, char* argv[]) { int x = 3, y = 4; int i=0; int **p = new int*[x];//创建一个动态int* 型数组 for( i = 0; i p[i] = new int[y];
2013-09-25 12:37:01
501
转载 大数n的阶乘
include {当输入的n的值很大时,很难有存储的结构,就把这个大数在形成的过程中,将它的各个位都分离出来,分 别保存在一个数组中,这样就可以存储了。}#includeusing namespace std;int res[10010];int main(){
2013-09-25 12:35:09
478
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅