余宙华 2021-02-09 17:11 采纳率: 0%
浏览 221
已结题

dev C++ ,cout语句为何会影响程序的运行结果??

/*
   这是一个简单的用“扩展欧几里得”求解乘法逆元的程序,洛谷P3811:  https://www.luogu.com.cn/problem/P3811
   样例输入 10,13
  样例输出 1,7,9,10,8,11,2 ,5, 3,4
  最诡异的是,在函数exgcd()中第一行的cout语句如果执行的话,答案就是正确的,如果不执行,答案就是错误的。
  ???? 求指教
*/
#include <iostream>
using namespace std;
void exgcd(int a,int b,int gcd, int&x, int&y); //已经gcd(a,b), 求gcd(a,b)的线性组合 ax+by ; 其中 a>b 
int main(){
    int n,p;
    cin>>n>>p;
    int x,y;
    for(int i=1;i<=n;i++){
        exgcd(i,p,1,x,y);
        cout<<(y%p+p)%p<<endl;
    } 
    return 0;
}

void exgcd(int a,int b,int gcd, int&x, int&y){
    //cout<<endl<<"a="<<a<<",b="<<b<<endl; //【这一句如果执行的话,答案就是正确的。】 
    if(a<b)
        swap(a,b);
    if(0==b){
        x=gcd/a;
        return;
    }
    int xt,yt;
    //递归 
    exgcd(b,a%b,gcd,xt,yt); //用引用类型返回xt,yt
    x=yt;    
    y=xt-a/b*yt;    
    return;    
}
 

  • 写回答

6条回答 默认 最新

  • 蒟蒻一枚 2021-02-09 19:26
    关注

      if(0==b){
            x=gcd/a;
            return;
        }

    这里错了,if里面应该是x = 1; y = 0;

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘