NOIP2012拓展欧几里得
2016-07-18 16:07
267 查看
拉板题,,,不说话
我之前是不是说过数据结构很烦,,,我想收回,,,今天开始的数论还要恶心,一早上听得头都晕了
先来一发欧几里得拓展裸
代码又短又好懂,所以就不解释了
可以看出gcd中所有关于xy的东西删光就变成了朴素的球最大公约数的gcd——其实本程序中的欧几里得是拓展欧几里得,所以应该叫exgcd而不是gcd,但是不需要求gcd所以就偷个懒好了
然后通过数学推导就能发现每一次辗转相除对应的x y的变化规律
然后就没有然后了
——虽然听晕了,但是能15行解决题目的感觉真爽
我之前是不是说过数据结构很烦,,,我想收回,,,今天开始的数论还要恶心,一早上听得头都晕了
先来一发欧几里得拓展裸
#include <cstdio> void gcd(int a,int b,int&d,int&x,int&y) { if(!b)d=a,x=1,y=0; else gcd(b,a%b,d,y,x),y-=x*(a/b); } int main() { int a,b,d,x,y; scanf("%d%d",&a,&b); gcd(a,b,d,x,y); x=(x%b+b)%b; printf("%d\n",x); return 0; }
代码又短又好懂,所以就不解释了
可以看出gcd中所有关于xy的东西删光就变成了朴素的球最大公约数的gcd——其实本程序中的欧几里得是拓展欧几里得,所以应该叫exgcd而不是gcd,但是不需要求gcd所以就偷个懒好了
然后通过数学推导就能发现每一次辗转相除对应的x y的变化规律
然后就没有然后了
——虽然听晕了,但是能15行解决题目的感觉真爽
相关文章推荐
- LUA基础
- 页面显示(pageshow)和页面隐藏(pagehide)事件
- caffe源码阅读3-blob.cpp
- JVM性能调优
- 有名管道总结
- 新浪分享授权登录
- 游戏测试------------第5章
- ACM HDU 1061 Rightmost Digit
- hdu--1879继续畅通工程
- android开发五子棋人人对战
- JSP自定义标签
- cesiumjs开发实践 (四)
- UISearchController的searchBar点击消失的问题解决
- 最频繁访问驻留缓存算法
- Leetcode 58. Length of Last Word (Easy) (cpp)
- 【HDU 4006】The kth great number(优先队列)
- 数据结构之Trie
- RMQ模板
- 深入浅出CGlib——打造无入侵的类代理
- 如何设置打开PL/SQL预加载之前的sql文本内容