摘要: 这题很容易就可以推出f(n)的公式。这个用到了矩阵和整数的快速2分幂,还需注意一点就是pow(n,m)=pow(n,m mod 1000000006);千万注意别写成mod 1000000007 ,否者会一直WA的。#include<iostream>#include<stdio.h>using namespace std;typedef __int64 in;struct aa{ in a[2][2]; void init() { a[0][0]=a[0][1]=a[1][0]=1; a[1][1]=0; }};aa mul(aa m,aa n){ aa ans; f 阅读全文
posted @ 2013-05-20 14:24 _随心所欲_ 阅读(266) 评论(0) 推荐(0)
摘要: 矩阵快速幂的水题#include<iostream>#include<stdio.h>#include<cmath>#include<iomanip>using namespace std;struct aa{ int a[11][11];};int mod;aa f(aa m,aa n){ aa ans; for(int i=0;i<10;i++) for(int j=0;j<10;j++) { ans.a[i][j]=0; for(int k=0;k<10;k++) ans.a[i][j]+=m.a[i][k]*n.a[k] 阅读全文
posted @ 2013-05-19 14:44 _随心所欲_ 阅读(138) 评论(0) 推荐(0)
摘要: 这个也是矩阵2分快速幂但是重点是找出规律来就好做了即:f(n)=f(n-1)+f(n-3)+f(n-4)#include<iostream>#include<stdio.h>#include<cmath>using namespace std;struct aa{ int a[4][4]; void init() { a[0][0]=a[0][2]=a[0][3]=a[1][0]=a[2][1]=a[3][2]=1; a[0][1]=a[1][1]=a[1][2]=a[1][3]=a[2][0]=a[2][2]=a[2][3]=a[3][0]=a[3][1] 阅读全文
posted @ 2013-05-19 13:51 _随心所欲_ 阅读(199) 评论(0) 推荐(0)
摘要: 这个主要是矩阵2分快速幂#include#include#includeusing namespace std;struct aa{ int a[11][11];};aa f(aa m,aa n,int nn){ aa ans; for(int i=0;i>=1; m=f(m,m,n); } sum=0; for(i=0;i<n;i++) sum+=ans.a[i][i]; return sum%9973;}int main(){ long m; int t,n,i,j; scanf("%d",&t); while(t--) { aa p; scanf( 阅读全文
posted @ 2013-05-19 12:51 _随心所欲_ 阅读(157) 评论(0) 推荐(0)
摘要: 刚学习矩阵快速幂对于这题求后4位是使用矩阵快速幂进行;而对于前4位,用到公式求得,具体看代码:#include#include#includeusing namespace std;long a[2][2]={{1,1},{1,0}},b[2]={0,0};struct aa{ long a[2][2]; void init() { a[0][0]=a[0][1]=a[1][0]=1; a[1][1]=0; }};aa f(aa m,aa n,long mod){ aa ans; for(int i=0;i>=1; m=f(m,m,mod); } return ans;}int main 阅读全文
posted @ 2013-05-19 11:24 _随心所欲_ 阅读(186) 评论(0) 推荐(0)
摘要: 这题是很水的题……#include <iostream>#include <stdio.h>using namespace std;int fun(int m,int n){ int a; if(m<n) { a=m; m=n; n=a; } while(m%n!=0) { a=m%n; m=n; n=a; } return n;}int main(){ int x,y,z,t,i,j,m,d,flag,k; int mm[13]; scanf("%d",&t); for(k=1;k<=t;k++) { mm[1]=mm[3]=m 阅读全文
posted @ 2013-05-19 09:13 _随心所欲_ 阅读(562) 评论(2) 推荐(0)
摘要: 用汇编实现学生信息管理系统;经过一番努力终于完成了所有的功能,哈哈哈.model smallstudent struct id db 4 dup(?) score db 4 dup(?) rank db 4 dup(?)student ends.datastr0 db ' Welcome to the student information management system',10,13,'$'str1 db ' *************Menu******************',10,13,'$' str3 db  阅读全文
posted @ 2012-12-15 21:57 _随心所欲_ 阅读(847) 评论(2) 推荐(0)
摘要: 1.大数加法DATAS SEGMENT A db 100 dup(?);第一个数 B db 100 dup(?) ;第二个数 count db ?;记录最大位数 temp db ?;进位标志位 len1 db 0;记录A的位数 len2 db 0;B的位数DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:DATASSTART: MOV AX,DATAS MOV DS,AX mov es,ax xor ax,axin1: ;A数组的输入 mov ah,1 int... 阅读全文
posted @ 2012-12-15 21:44 _随心所欲_ 阅读(2293) 评论(0) 推荐(0)
摘要: 这是一道简单的数论题,就是找出每个数的因子,并求和在与原数比较。再求每个因子是,为了节省时间,另外用了一个大数组表示该因子是否找过了。代码如下:#include#includeusing namespace std;int an[60001];int com(int a){ int i,sum; sum=1; memset(an,0,sizeof(an)); for(i=2;i>n&&n) { cout<<setw(5)<<n<<" "; if (n==1) { cout<<"DEFICIENT 阅读全文
posted @ 2012-12-15 21:33 _随心所欲_ 阅读(221) 评论(0) 推荐(0)
摘要: 实现的排序的次数输出和排完序后数组的输出DATAS SEGMENT aa db 0,1,2,4,3,5,6,7,8,9 temp db ?DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:DATASSTART: MOV AX,DATAS MOV DS,AX mov bx,9;设置外层循环最大次数 xor dl,dl;dl作为记录进行了几趟排序,初始化为0 mov temp,10h;temp判断排序是否完成,初始化为非零数p1: cmp temp,0;判断temp是否为0 ... 阅读全文
posted @ 2012-10-18 21:35 _随心所欲_ 阅读(599) 评论(0) 推荐(0)