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 24 1
12 24 2
12 24 3
12 24 4
12 24 5
12 24 6
12 24 7

样例输出

12
6
4
3
2
1
-1

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 (枚举)的更多相关文章

  1. Swift enum(枚举)使用范例

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...

  2. 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)

    建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...

  3. Objective-C枚举的几种定义方式与使用

    假设我们需要表示网络连接状态,可以用下列枚举表示: enum CSConnectionState { CSConnectionStateDisconnected, CSConnectionStateC ...

  4. Help Hanzo (素数筛+区间枚举)

    Help Hanzo 题意:求a~b间素数个数(1 ≤ a ≤ b < 231, b - a ≤ 100000).     (全题在文末) 题解: a~b枚举必定TLE,普通打表MLE,真是头疼 ...

  5. 枚举:enum

    枚举 所谓枚举就是指定好取值范围,所有内容只能从指定范围取得. 例如,想定义一个color类,他只能有RED,GREEN,BLUE三种植. 使用简单类完成颜色固定取值问题. 1,就是说,一个类只能完成 ...

  6. .NET 基础一步步一幕幕[方法、结构、枚举]

    方法.结构.枚举 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值,写void 方法名:P ...

  7. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

  8. 用枚举enum替代int常量

    枚举的好处: 1. 类型安全性 2.使用方便性 public class EnumDemo { enum Color{ RED(3),BLUE(5),BLACK(8),YELLOW(13),GREEN ...

  9. c#编程基础之枚举

    枚举的意义就在于限制变量取值范围. 当可以确定的几种取值时才可以用. 如果输入一个字符串需要进行判断是否是我们需要的字符串时,则一般需要这样写: using System; using System. ...

随机推荐

  1. 疯狂位图之——位图生成12GB无重复随机乱序大整数集

    上一篇讲述了用位图实现无重复数据的排序,排序算法一下就写好了,想弄个大点数据测试一下,因为小数据在内存中快排已经很快. 一.生成的数据集要求 1.数据为0--2147483647(2^31-1)范围内 ...

  2. JavaScript事件详解

    1.事件传播机制:事件冒泡,事件捕获.      2.注册事件处理程序方式: 设置html标签属性为事件处理程序,文档元素的事件处理程序属性,名字由“on”后面跟着事件名组成,例如:onclick,o ...

  3. 细说 Web API参数绑定和模型绑定

    今天跟大家分享下在Asp.NET Web API中Controller是如何解析从客户端传递过来的数据,然后赋值给Controller的参数的,也就是参数绑定和模型绑定. Web API参数绑定就是简 ...

  4. Android Studio 常用快捷键及如何沿用Eclipse的快捷键

    1.显示最近编辑的文件列表 Ctrl + E 2.快速打开类 Ctrl + N 3.快速打开文件(可以是XML等各种格式后缀的文件) Ctrl + Shift + N 4.当前方法的声明 Alt + ...

  5. 《1024伐木累》-te别篇,庭审你知道吗?

    思前想后,我觉得不应该发这一期,因为,做完这一期之后突然发觉,自己失去了主题,到底是在讽刺?还是在讽刺?还是在讽刺呢?不论是什么,大家自己判断吧.就当作者不想发表自己的观点,先看这一期的对白吧! 1. ...

  6. css自定义字体

    @font-face { font-family: 华文隶书; src: url( ../font/STLITI.eot ); /* IE */ src: url( ../font/STLITI.tt ...

  7. The entity type <type> is not part of the model for the current context

    这是在网站里遇到的一个错误,自动生成的不能手动添加, reference: http://stackoverflow.com/questions/19695545/the-entity-type-xx ...

  8. HTML5——地图应用

    我们就拿百度地图举例吧: 废话少说,直接上Demo 简要截图如下:' 简要代码如下: <!DOCTYPE html> <html> <head> <title ...

  9. Git的基本使用方法和安装&心得体会

    1. git的安装和github的注册.代码托管.创建organization.邀请member. (1)git的安装 因为我电脑是windows系统,所以下载的是git for windows.在官 ...

  10. tomcat服务器上webapps里的文件名和项目名称不一样,修改方法

    第一种方法:打开工程所在目录,找到一个 .mymetadata的文件,用记事本等打开,内容大致如下: <?xml version="1.0" encoding="U ...