126.c

来自「平时acm训练时ac的源代码」· C语言 代码 · 共 66 行

C
66
字号
/*
126. Boxes 
Accepted 56 ms 114 kb 
*/

#include <stdio.h>
#include <stdlib.h>

int main()
{
	long A, B, C, *S, qA, qB;
	int i;
	scanf("%ld %ld", &A, &B);
	if (0==A || 0==B)
	{
		printf("0");
	}
	else if (A==B)
	{
		printf("1");
	}
	else
	{
		if (A>B)
		{
			C=B;
			B=A;
			A=C;
		}
		qA = A;
		qB = B;
		for (C=qB%qA; 0!=C; C=qB%qA)
		{
			qB=qA;
			qA=C;
		}
		C=(B+A)/qA;
		do
		{
			S = (long *)malloc(sizeof(long) * 31);
		}while(!S);
		S[0] = 1;
		for (i=1; i<31; i++)
		{
			S[i] = 2*S[i-1];
		}
		for (i=0; i<31; i++)
		{
			if (C==S[i])
			{
				A=-1;
				break;
			}
		}
		if (-1==A)
		{
			printf("%d", i);
		}
		else
		{
			printf("-1");
		}
		free(S);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?