整数表示法

来源:互联网 发布:怎么查淘宝历史价格 编辑:程序博客网 时间:2024/05/20 11:21

整数表示法
题目详情:
我们知道,如果X,Y互素时aX+bY可以表示任意整数(其中a,b为整数)。如果设置条件X,Y>0,并且aX+bY>=0时,求能表示的整数集中连续的整数最小的是多少?
例如输入X=3,Y=4.整数集为0,3,4,6,7,8,9……则输出6;
输入1行X和Y,输出一行表示最小整数;
其中X,Y为32位整数且互素

答题说明:
测试用例
5 6
20
1 2
0
2 3

/*整数表示法题目详情:我们知道,如果X,Y互素时aX+bY可以表示任意整数(其中a,b为整数)。如果设置条件X,Y>0,并且aX+bY>=0时,求能表示的整数集中连续的整数最小的是多少?例如输入X=3,Y=4.整数集为0,3,4,6,7,8,9……则输出6;输入1行X和Y,输出一行表示最小整数;其中X,Y为32位整数且互素答题说明:测试用例5 6201 202 3给定X, Y(互素),求不能表示成aX+bY且最大的整数n(其中a,b>=0),输出n+1。假设任意正整数n = aX+ bY。当0<= a <= Y-1时, n的表达式唯一,即a, b的值唯一。这时如果a增加Y那么b就减少X,如果a减少Y那么b就增加X, 如果此时b<0,那么n就不能被表示,因为b<0, 要使b>=0,那么b就至少要增加X,对应的a至少要减少Y,这样a就小于0了,即a>=0 和 b>=0不可兼得。不能表示成aX+bY且最大的整数n(其中a,b>=0)的数就是在区间0<=a<=Y-1中,a取最大b也取最大. 即a = Y-1, b=-1,此时n = (Y-1)X + (-1)Y = XY - X - Y, 输出n + 1 = (X - 1) * (Y -1).*/#include<iostream>#include<stdio.h>using namespace std;int main(){__int64 x,y;while(scanf("%I64d%I64d",&x,&y)!=EOF){printf("%I64d\n",(x-1)*(y-1));}}

0 0