ABK (枚举)
ABK | 
||
| Accepted : 24 | Submit : 176 | |
| Time Limit : 1000 MS | Memory Limit : 65536 KB | |
题目描述ABK是一个比A+B还要简单的题目,给出两个整数A,B,求出A和B的第K大公约数。 输入第一行是一个整数N(N ≤ 10000),表示样例的个数。 以后每行一个样例,为3个整数A,B,K (1≤A,B≤109 , 1≤K≤10) 输出每行输出一个整数d,表示A,B的第K大公约数 若没有第K大的公约数则输出-1。 样例输入7 样例输出12  | 
ACKNOWLEDGE http://94it.net/a/jingxuanboke/2015/0112/446859.html
乍一看很简单,可是老是TML(哈哈,结果做的睡着了),看了人家的思路的确要比自己的耀眼很多。
用了正反枚举.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
#include<algorithm>
#include<set>
#include<cmath>
#include<vector>
using namespace std; int a,b,k;
int gcd(int a,int b)
{
if(b==)
return a;
else
return gcd(b,a%b); }
void solve()
{
int mx=gcd(a,b),cnt=;
for(int i=;i*i<=mx;i++) //正向枚举
if(mx%i==)
{
cnt++;
if(cnt==k)
{
cout<<mx/i<<endl;
return;
}
} for(int i=floor(sqrt(mx)+0.5);i>=;i--) //反向枚举//用floor为了避免误差
if(mx%i==)
{
cnt++; if(i*i==mx)
cnt--; //小细节,如果gcd的算数平方根正好是整数,反向枚举的第一个i和正向枚举的最后一个i重复了
if(cnt==k)
{
cout<<i<<endl;
return;
}
}
if(cnt<k)
cout<<"-1"<<endl;
} int main()
{
// freopen("a.txt","r",stdin);
int T;
cin>>T;
while(T--)
{ cin>>a>>b>>k; solve(); }
return ;
}
正反枚举
ABK (枚举)的更多相关文章
- Swift enum(枚举)使用范例
		
//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...
 - 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)
		
建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...
 - Objective-C枚举的几种定义方式与使用
		
假设我们需要表示网络连接状态,可以用下列枚举表示: enum CSConnectionState { CSConnectionStateDisconnected, CSConnectionStateC ...
 - Help Hanzo (素数筛+区间枚举)
		
Help Hanzo 题意:求a~b间素数个数(1 ≤ a ≤ b < 231, b - a ≤ 100000). (全题在文末) 题解: a~b枚举必定TLE,普通打表MLE,真是头疼 ...
 - 枚举:enum
		
枚举 所谓枚举就是指定好取值范围,所有内容只能从指定范围取得. 例如,想定义一个color类,他只能有RED,GREEN,BLUE三种植. 使用简单类完成颜色固定取值问题. 1,就是说,一个类只能完成 ...
 - .NET 基础一步步一幕幕[方法、结构、枚举]
		
方法.结构.枚举 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值,写void 方法名:P ...
 - Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件
		
在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...
 - 用枚举enum替代int常量
		
枚举的好处: 1. 类型安全性 2.使用方便性 public class EnumDemo { enum Color{ RED(3),BLUE(5),BLACK(8),YELLOW(13),GREEN ...
 - c#编程基础之枚举
		
枚举的意义就在于限制变量取值范围. 当可以确定的几种取值时才可以用. 如果输入一个字符串需要进行判断是否是我们需要的字符串时,则一般需要这样写: using System; using System. ...
 
随机推荐
- SQL Server 2008 过期
			
最近SQL Serve 2008 过期,不能正常运行,通过如下方式解决此问题: (1) 修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQ ...
 - CSS培训机构
			
CSS培训机构[跑赢职场,跑赢未来] CSS培训机构[跑赢职场,跑赢未来]CSS设计热度白热化的今天,如何选对专业的CSS设计培训学校/机构,成为众多人关注的话题.跑赢职场就是css培训机构中的佼佼者 ...
 - WCF 入门 (21)
			
前言 再不写一篇就太监了,哈哈. 第21集 WCF里面的Binding Bindings in WCF 其实不太了解为什么第21集才讲这个Binding,下面都是一些概念性的东西,不过作为一个入门视频 ...
 - 每天一个linux命令(45):route命令
			
Linux系统的route 命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两个不同的子网之间的通信,需 要一台连接两个网络的路由器 ...
 - Java-list,set,map的区别
			
jdk中api的定义 Collection ├----List │ ├----LinkedList │ ├----ArrayList │ └----Vector │ └----Stack └----S ...
 - array,vertor,arraylist,hashable,hashmap等几个易混淆概念的区别
			
Array可以存放Object和基本数据类型,但创建时必须指定数组的大小,并不能再改变, Vertor是放的Object. Vertor一维,Hashmap/Hashtabe二维: Vertor/Ar ...
 - Oracle分页查询语句
			
SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM (此处添加你要分页的表)) A WHERE ROWNUM <= 14000)WH ...
 - 人工蜂群算法-python实现
			
ABSIndividual.py import numpy as np import ObjFunction class ABSIndividual: ''' individual of artifi ...
 - Redis 集合操作
			
1.SCARD key 返回集合 key 的基数(集合中元素的数量). 2.SDIFFSTORE destination key [key ...] 这个命令的作用和 类似,但它将结果保存到 des ...
 - form的submit与onsubmit的用法与区别
			
发生顺序:onsubmit -> submit1.阻止表单提单:<script>function submitFun(){ //逻辑判断 return true; //允 ...