算法设计与分析基础 第三版 课后答案1.1 |
您所在的位置:网站首页 › 数据分析基础课后答案 › 算法设计与分析基础 第三版 课后答案1.1 |
1.1.5 #include using namespace std; int a[]={2,5,5,5}; int b[]={2,2,3,5,5,7}; int i,j; int main(){ while(i cout if(b==0)return a; gcd(b,a%b); } int main(){ cout int m,n;cin>>m>>n; c=max(m,n); g=gcd(m,n); if((c/g)%2)coutx=1;y=0;return a;} int ans=exgcd(b,a%b,x,y); int temp=x; x=y; y=temp-a/b*y; return ans; }b 1.ax+by=gcd(a,b) 求得x,y,gcd(a,b) 2.if(!c%gcd(a,b))无整数解,退出 else 继续 3.已知x,y,c,gcd(a,b)求得x0=xc/gcd(a,b),y0=yc/gcd(a,b) 4.求得通解 x1=x0+kb/gcd(a,b) y1=y0+ka/gcd(a,b) x1 = (x + k * ( b / gcd(a, b) )) (c / gcd(a, b) ) 令 b1 = b / gcd(a, b) x1 = (x1 % b1 + b1) % b1 y1 = (c - ax1) / b 关于为何x1 = (x1 % b1 + b1) % b1: x1=x0+k*b/gcd(a,b),则b/gcd(a,b)为x的解的周期, 设b1 = b/gcd,gcd不一定正,如果gcd为负将它取为正。对x,先x%b1得出最小的解,再将这个值加模取模,从而变为一个正数 例题洛谷P1516 1.1.12带锁的门 文字分析:https://blog.csdn.net/u012439764/article/details/81981748 #include #include #include using namespace std; int main(){ int n;cin>>n; bool a[n+1]={0}; for(int i=1;i if(!(j%i)){ if(a[j])a[j]=0; else a[j]=1; } } } cout if(!a[i])cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |