双六(扩展欧几里得算法)

/*
题目描述 :
一个双六上面有向前 向后无限延续的格子, 每个格子都写有整数。其中0号格子是起点,1号格子
是终点。而骰子上只有a,b,-a,-b四个整数,所以根据a和b的值的不同,有可能无法到达终点
掷出四个整数各多少次可以到达终点呢?如果解不唯一,输出任意一组即可。如果无解 输出-1

*/

笔者字不好看。。。。。

                   

 

下面是代码实现(注意思想)

#include<iostream> #include<algorithm> using namespace std; int extgcd(int a, int b, int& x, int& y) { int d = a; if(b != 0) { d = extgcd(b,a%b,y,x); y-=(a/b)*x; } else { x=1;y=0; } return d; } int main() { int a, b, x, y; int cnt[4] = {0}; scanf("%d%d", &a, &b); if (extgcd(a, b, x, y) != 1) { cout << -1 << endl; return 0; } if (x > 0) cnt[0] = x; else if (x < 0) cnt[2] = -x; if (y > 0) cnt[1] = y; else if (y < 0) cnt[3] = -y; for (int i = 0; i < 4; i++) cout << cnt[i]; cout << endl; return 0; }
View Code

 


__EOF__

本文作者吃货智
本文链接https://www.cnblogs.com/Yinchen-One/p/8921747.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   奋斗の小白  阅读(779)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示