内存:128  时间:1

题目描述

又是一年毕业季,校吧内掀一起了一阵吧聚狂潮。大家聚到21,聊聊天,秀秀ID,玩玩游戏。

墨尔本为了显示高大上,推荐了这样一个游戏,假设把平地看成一个坐标轴,让三个大吧分别站在(0,0)(a,b)(c,0)的位置,两两之间拉一根直线, 然后让其他人站在里面,但是有一个要求,只能站在整数格点上(即x,y坐标都是整数),如果线穿过了某些整数格点,则人不能站在上面。现在由墨尔本随意说 a,b,c的值,你能帮忙确定能有多少人能够站在围成的图形内吗?

输入

输入三个整数a,b,c.并且0<=a<=30000,0<b<=30000,0<c<10^5;

输出

输出只有一行,包含一个整数,代表能站在围成的图形内的人数

样例输入

5 6 7

样例输出

17

提示

代码如下

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int a,b,c;
    int i,x,y,ans=0;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
        for(i=1;i<c;i++)
        {
            x=b*c-b*i;
            if(x%c==0)  x=x/c-1;
            else    x=x/c;
            ans+=x;
        }
    }
    else if(a==c)
    {
        for(i=1;i<a;i++)
        {
            x=b*i;
            if(x%a==0)  x=x/a-1;
            else    x=x/a;
            ans+=x;
        }
    }
    else if(c<a)
    {
        for(i=1;i<c;i++)
        {
            x=b*i;
            if(x%a==0)  x=x/a-1;
            else x=x/a;
            ans+=x;
        }
        for(i=c;i<a;i++)
        {
            x=b*i;
            if(x%a==0)  x=x/a-1;
            else    x=x/a;
            y=b*i-b*c;
            y=y/(a-c)+1;
            ans+=(x-y+1);
        }
    }
    else if(a<c)
    {
        for(i=1;i<=a;i++)
        {
            x=b*i;
            if(x%a==0)  x=x/a-1;
            else    x=x/a;
            ans+=x;
        }
        for(i=a+1;i<c;i++)
        {
            x=b*i-b*c;
            if(x%(a-c)==0)
                x=x/(a-c)-1;
            else
                x=x/(a-c);
            ans+=x;
        }
    }
    printf("%d\n",ans);
    return 0;
}

代码来源于互联网,仅供参考!