现在的位置: 首页 > 综合 > 正文

整数表示法

2018年01月19日 ⁄ 综合 ⁄ 共 811字 ⁄ 字号 评论关闭

整数表示法
题目详情:
我们知道,如果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 6
20
1 2
0
2 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));
	}
}

抱歉!评论已关闭.