摘要:
最近一次更新系统后开机发现电脑只能连有线网络连不上无线网络。我平时都是连无线网络,没有买网线。所以查了下无线驱动相关问题资料,发现是由于更新系统造成无线网卡驱动莫名不见了。刚开始还以为是电脑将无线禁用了。。。 于是在网上下了无线网卡驱动,我下的是hybrid-v35_64-nodebug-pc... 阅读全文
摘要:
最近学习容斥原理,实现容斥原理大致有三种方法:dfs,队列数组,二进制。今天主要讲下二进制实现容斥原理: 有一个集合{A1……An},求集合的子集?很显然答案为也就是2^n个,也就是每一个子集有唯一标志符 i (0 2 #include 3 #include 4 #include 5 #includ... 阅读全文
摘要:
[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃... 阅读全文
摘要:
思路:对于a#includeusing namespace std;#define ll __int64ll p,m;ll gcd(ll a,ll b){ if(am){ //4 ans+=min(m,mb)+1; ll t=(p+m-ma)%p;//根据ma求出满足最小的y来 if(t>a>>b>>c>>d>>p>>m; ll ans=f(b,d)-f(b,c-1)-f(a-1,d)+f(a-1,c-1); ll tot=(b-a+1)*(d-c+1); ll g=gcd(ans,tot); ... 阅读全文
摘要:
思路:在没有限制条件时,很容易知道结果为C(m+n,n)*C(m+q-p,q).然后再把相交的情况去除就可以了。而如果想到了就是水题了……求A->D,B->C相交的情况可以转化为求A->C,B->D的情况。所以结果就为C(m+n,n)*C(m+q-p,q)-C(m+q,m)*C(m+n-p,n).代码:#include#include#define M 200001#define mod 100000007#define ll long longusing namespace std;ll inv(ll x){ if(x==1) return 1; return inv 阅读全文
摘要:
思路:要求满足的m=a3+b3=(a+b)(a2-ab+b2)的(a,b)组合。令t=a+b,则t一定是m的约数,所以应枚举m的所有约数。然后可以得到a+b=tab=(t2-m/t)/3=p继而转化为a2-ta+p=0是否有正整数解就可以了。再就是注意范围要用unsigned long long。代码: 1 #include 2 #include 3 #include 4 #include 5 #define ll unsigned long long 6 #define M 5000001 7 #define mm 2641636 8 using namespace std;... 阅读全文
摘要:
一道纯粹的容斥原理题!!不过有一个trick,就是会出现重复的,害我WA了几次!!代码:#include#include#include#include#include#include#include#define ll long long#define mod 55566677using namespace std;int p[52],ans;int m,n;bool visd[52],visc[52],vis[52][52];struct point{ int a,b;}q[30];void dfs(int s,int i,int f){ ans=(ans+f*p[n-s])%... 阅读全文
摘要:
思路:容易得到s[n]=s[n-1]+s[n-2],也就是fib数。求第k小的fib质数的也就是第k个质数数-2,当k>2时。在就是s[n]/x%m=s[n]%(x*m)/x.代码如下:#include#include#include#define ll long long#define M 1000005using namespace std;ll k,x,m;int prime[M],cnt;bool f[20*M];struct mat{ ll m[2][2];};mat mul(mat a,mat b,ll mod){ mat ans; for(int i=0;i>=... 阅读全文
摘要:
思路:看题就知道用扩展的欧几里得算法做!!!首先我们可以求出ax+by=gcd(a,b)=g的一个组解(x0,y0).而要使ax+by=c有解,必须有c%g==0.继而可以得到ax+by=c的一个组解x1=c*x0/g , y1=c*y0/g。这样可以得到ax+by=c的通解为: x=x1+b*t; y=y1-a*t;再就是要注意符号问题!!!代码如下: 1 #include 2 #include 3 #define ll long long 4 using namespace std; 5 ll gcd_extend(ll a,ll b,ll &x,ll &y) 6 { 7 阅读全文
摘要:
思路:由于只有1-6这几个数,而这几个数的最小公倍数是60,所以只需要求出60以内有多少满足条件的数即可。再就是求出对于给定的n,求出60的倍数。然后就是怎样求的问题了。首先可以写成如下形式: 10n-40=60*n (把最后的40个数去掉,最后在求结果的时候再加上) n=(10n-40)/60. (结果一定可以整除)代码如下: 1 #include 2 #define ll long long 3 #define mod 1000000007 4 ll pw(ll a,ll b) 5 { 6 ll ans=1; 7 while(b){ 8 if(b&1) an... 阅读全文
摘要:
思路:由于数据很大,先通过打表找规律可以知道,当n为偶数的时候其SG值为n/2;当n为奇数的时候一直除2,直到为偶数m,则SG值为m/2;代码如下: 1 #include 2 int cal(int m) 3 { 4 while(m&1) m>>=1; 5 return m>>1; 6 } 7 int main() 8 { 9 int t,n,ca=0,a;10 scanf("%d",&t);11 while(t--){12 scanf("%d",&n);13 int ans=0;14 for(int i= 阅读全文