poj 2773欧几里得的应用
来源:互联网 发布:文本导入mysql 乱码 编辑:程序博客网 时间:2024/06/07 06:16
题目大意就是给出n和k求出第k个与n互素的数
如果知道欧几里德算法的话就应该知道gcd(b×t+a,b)=gcd(a,b) (t为任意整数)
则如果a与b互素,则b×t+a与b也一定互素,如果a与b不互素,则b×t+a与b也一定不互素
故与m互素的数对m取模具有周期性,则根据这个方法我们就可以很快的求出第k个与m互素的数
假设小于m的数且与m互素的数有k个,其中第i个是ai,则第m×k+i与m互素的数是k×m+ai
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include<algorithm>#include<map>using namespace std;const int maxn = 1000000 + 100;#define INF 0x3f3f3f3f#define clr(x,y) memset(x,y,sizeof x )typedef long long ll;#define eps 10e-10const int Mod = 1000000007;typedef pair<ll, ll> P;int gcd(int x,int y){ return y ? gcd(y,x % y) : x;}int ps[maxn];int main(){ int n,k; while( ~ scanf("%d%d",&n,&k)) { int len = 0; for(int i = 1; i <= n; i ++) { if(gcd(n,i) == 1) ps[len ++] = i; } if(k <= len) { printf("%d\n",ps[k - 1]); continue; } int t = k / len,ts = k % len; printf("%d\n",ts ? (t * n + ps[ts - 1]) : ((t - 1) * n + ps[len - 1])); } return 0;}
阅读全文
0 0
- poj 2773欧几里得的应用
- poj 2773 欧几里得 一个拓展应用
- poj 1601 青蛙的约会 扩展欧几里得定理应用
- 扩展欧几里得的应用
- Happy 2006 - POJ 2773 欧几里得
- 一个欧几里得扩展的应用
- 扩展欧几里得算法的应用 POJ 2115 POJ 2142 POJ 1061 HDU 2669 HDU 1576 SGU 106
- POJ 1061 青蛙的约会 扩展欧几里得算法的应用及介绍(好题)
- poj--1061青蛙的约会(扩展欧几里得公式的应用)
- poj 1901 跳蚤 扩展欧几里得定理和容斥原理的应用
- POJ 1061 青蛙的约会 扩展欧几里得
- poj 1061 青蛙的约会 扩展欧几里得
- poj 1061青蛙的约会(扩展欧几里得)
- POJ 1061 青蛙的约会( 扩展欧几里得)
- poj 1061 青蛙的约会(扩展欧几里得)
- Poj 1061 青蛙的约会(扩展欧几里得)
- [拓展欧几里得] poj 1061 青蛙的约会
- POJ-1061-青蛙的约会(扩展欧几里得)
- iOS开发算法--希尔排序
- 全志R16的android4.4.2平台点亮gc2145(evb30)版本:V1.1(分色排版)
- Hbase原理、基本概念、基本架构
- python-opencv:图像的位运算
- 快速选择合适的机器学习算法
- poj 2773欧几里得的应用
- solr清除索引
- delphi连接access数据库的步骤(详细教程)
- 存储过程写入大批量数据,用于测试mysql查询优化
- OpenCV学习笔记(5)图像的载入,显示和输出
- Linux mtd 驱动
- iOS开发算法--冒泡排序
- 网上资源笔记
- ubuntu登陆管理账户后闪回到登陆界面