链接:codeforces 527A
题意:一张纸,以最小边折正方形,余下的再折,直到剩下的为正方形为止,求需要对折几次。
思路:因为给的数据有10^12,所以直接求解必然会超时。可以先求出a是b的倍数,再进行a%b。
#include <stdio.h>
int main()
{
__int64 a,b,temp,ans;
while(scanf("%I64d%I64d",&a,&b)!=EOF)
{
ans=0;
while(1)
{
if(a<b){temp=a;a=b;b=temp;} //如果b比a大,就交换
if(a==b)break; //如果a=b,则计算结束,跳出循环
if(a%b==0){ans+=a/b;break;} //如果b能整除a,计算也结束
ans+=a/b;
a=a%b; //剩余的边长
}
printf("%I64d\n",ans);
}
return 0;
}