UVA10673 上下界问题

 1 #include <iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 #define LL long long
 5 LL a,b,m,n,d;
 6 void ex_gcd(LL a,LL b,LL &x,LL &y,LL &d)
 7 {
 8     if(b==0){
 9         d=a,x=1,y=0;
10     }
11     else{
12         ex_gcd(b,a%b,x,y,d);
13         LL t=x;
14         x=y,y=t-a/b*y;
15     }
16 }
17 int main()
18 {
19     LL T;
20     cin>>T;
21     for(int i=0;i<T;i++)
22     {
23         LL x,y;
24         cin>>x>>y;
25         if(x%y==0){
26             cout<<1<<‘ ‘<<y-1<<endl;
27         }
28         else{
29             a=x/y,b=a+1;
30             ex_gcd(a,b,m,n,d);
31             cout<<m*x<<‘ ‘<<n*x<<endl;
32         }
33     }
34     return 0;
35 }

Theorem

For any two integers x and k there exists two more integers p and q such that:

<!--[if !vml]--><!--[endif]-->

It?s a fairly easy task to prove this theorem, so we?d not ask you to do that. We?d ask for something even easier! Given the values of x and k, you?d only need to find integers p and q that satisfies the given equation.

<!--[if !supportEmptyParas]-->      <!--[endif]-->

Input

The first line of the input contains an integer, T (1≤T≤1000) that gives you the number of test cases. In each of the following T lines you?d be given two positive integers x and k. You can safely assume that x and k will always be less than 108.

Output

For each of the test cases print two integers: p and q in one line. These two integers are to be separated by a single space. If there are multiple pairs of p and q that satisfy the equation, any one would do. But to help us keep our task simple, please make sure that the values, <!--[if !vml]--><!--[endif]--> and <!--[if !vml]--><!--[endif]-->fit in a 64 bit signed integer.

对于这道题目来说,要注意上下界的问题,当x%k==0时,它的上界和下界是一样的,因为答案有多种,输出一个即可,所以此时将答案定位1和k-1即可。

在x%k!=0时,它的上界和下界相差1,那么很自然的想到它们的最大公约数为1,所以可以直接用扩展欧几里德算法。

当然因为x是最大公约数的x倍,所以最后答案要乘上x

代码如下:

UVA10673 上下界问题,布布扣,bubuko.com

时间: 2024-10-16 09:57:36

UVA10673 上下界问题的相关文章

BZOJ 2406 二分+有上下界的网络流判定

思路: 求出每行的和  sum_row 每列的和   sum_line 二分最后的答案mid S->i  流量[sum_row[i]-mid,sum_row[i]+mid] i->n+j 流量[L,R] n+j->T 流量 [sum_line[i]-mid,sum_line[i]+mid] 套用有上下界的网络流 判一下就好了.. 这是道有上下界网络流的裸题 //By SiriusRen #include <queue> #include <cstdio> #inc

有上下界的网络流3-有源汇带上下界最小流SGU176

题目大意:有一个类似于工业加工生产的机器,起点为1终点为n,中间生产环节有货物加工数量限制,输入u v z c, 当c等于1时表示这个加工的环节必须对纽带上的货物全部加工(即上下界都为z),c等于0表示加工上界限制为z,下界为0,求节点1(起点)最少需要投放多少货物才能传送带正常工作. 解题思路:    1.直接 增设超级源点ss和超级汇点tt并连上附加边,对 当前图 求 无源汇带上下界可行流    2.将图的汇点sd连一条容量无限制的边到图的源点st,再求一遍 无源汇带上下界可行流    3.

有上下界的网络流2-有源汇带上下界网络流ZOJ3229

ZOJ3229题目大意:一个屌丝给m个女神拍照,计划拍照n天,每一天屌丝可以和C个女神拍照,每天拍照数不能超过D张,而且给每个女神i拍照有数量限制[Li,Ri],对于每个女神n天的拍照总和不能少于Gi,如果有解求屌丝最多能拍多少张照,并求每天给对应女神拍多少张照:否则输出-1. 解题思路:        1.增设一源点st,汇点sd,st到第i天连一条上界为Di下界为0的边,每个女神到汇点连一条下界为Gi上界为正无穷的边,对于每一天,当天到第i个女孩连一条[Li,Ri]的边.        2.

zoj 3229 有源汇有上下界的最大流模板题

/*坑啊,pe的程序在zoj上原来是wa. 题目大意:一个屌丝给m个女神拍照.计划拍照n天,每一天屌丝最多个C个女神拍照,每天拍照数不能超过D张,并且给每一个女神i拍照有数量限制[Li,Ri], 对于每一个女神n天的拍照总和不能超过Gi,假设有解求屌丝最多能拍多少张照,并求每天给相应女神拍多少张照:否则输出-1. 解题思路:增设一源点st,汇点sd.st到第i天连一条上界为Di下界为0的边,每一个女神到汇点连一条下界为Gi上界为oo的边,对于每一天,当天到第i个女孩连一条[Li.Ri]的边. 建

有上下界的最大流解法

问题模型: 给定一个加权的有向图,满足: (1)容量限制条件: (2)流量平衡条件: (2)中的即除了源汇外,所有点都满足流量平衡条件,则称G为有源汇网络:否则,即不存在源汇,所有点都满足流量平衡条件,则称G为无源汇网络. 将这类问题由易到难一一解决: 问题[1] 求无源汇的网络有上下界的可行流 由于下界是一条弧上的流必需要满足的确定值.下面引入必要弧的概念:必要弧是一定流要满的弧.必要弧的构造,将容量下界的限制分离开了,从而构造了一个没有下界的网络G': 1. 将原弧(u,v)分离出一条必要弧

HDU 3157 Crazy Circuits(有源汇上下界最小流)

HDU 3157 Crazy Circuits 题目链接 题意:一个电路板,上面有N个接线柱(标号1~N),还有两个电源接线柱 + -,给出一些线路,每个线路有一个下限值求一个可以让所有部件正常工作的总电流 没有则输出impossible 思路: 有源汇有上下界求最小流,建模方法为: 按无源汇先建图,跑超级源汇ss->tt一次,然后加入t->s,容量INF的边,在跑一次ss->tt,如果是满流,就有解,解为t->s边的当前流量 顺带写个最大流的,最大流就先把t->s加入直接跑

有上下界的网络流

解决上下界网络流的一般思路: 解决这类问题的关键是如何去掉下界带来的麻烦.下面的哈工大出版的<图论及应用>里的思路. 1.网络的必要弧和构建附加网络 前一个数是下界,后一个数是上界. 下面的边是必要弧,其权值为下界.上面的边容量为上界与下界的差. 添加附加源点Y,附加汇点X (别弄错了) ,<X , Y>为的权值正无穷.对于必要弧<u , v>,添加<u,Y>,<Y,v>,容量为必要弧的容量. 删除<X, Y>,添加<T, S&

POJ 3801 有上下界最小流

1: /** 2: POJ 3801 有上下界的最小流 3: 4: 1.对supersrc到supersink 求一次最大流,记为f1.(在有源汇的情况下,先使整个网络趋向必须边尽量满足的情况) 5: 2.添加一条边sink -> src,流量上限为INF,这条边记为p.(构造无源汇网络) 6: 3.对supersrc到supersink再次求最大流,记为f2,这里判断是否为可行流.(要判断可行,必须先构造无源汇网络流,因此要再次求最大流) 7: 8: 此网络流的最小流即为 sink -> s

poj2396 Budget 有源汇上下界可行流

/** 题目:poj2396 Budget 链接:http://poj.org/problem?id=2396 题意: 给定一个n*m矩阵,矩阵元素未知.已知第1~n行的元素和,第1~m列的元素和.以及元素的一些数据范围. 求一个可行的矩阵. 思路: 联想到以前没有下届的做法,用一个s连接所有的行节点,容量为该行的和,所有的列节点连接t,容量为该列的和. 所有的行节点连接所有的列节点,容量为无穷,然后求s到t的最大流.如果从s出发的弧都是满载的,那么有解. 所有行到所有列的flow为对应的行列位