10465 Homer Simpson

描述:输入三个数n,m,t,寻找一堆n和m,使之和为t,如果不存在,那么则寻找最接近(小于等于)t的数,并求出此时所包含的最多的n与m的个数和这个数与t的差值,并输出这两个数
#include <cstdio>
int main()
{
   // freopen("a.txt","r",stdin);
    int n,m,t,count,sum,flag,pos,v;
    while(scanf("%d %d %d",&n,&m,&t)!=EOF)
    {
        sum=0;
        if(n>m)
        {
            int temp=n;
            n=m;
            m=temp;
        }
        count=0;
        sum=t;
        flag=v=0;
        pos=1000000;
        while(sum>=0)
        {
            int c=sum%n,d=sum/n+count/m;
            if(!c)
            {
                flag=1;
                break;
            }
            else
            {
                if(pos>c)
                {
                    pos=c;
                    v=d;
                }
                else if(pos==c&&v<d) v=d;
            }
            sum-=m;
            count+=m;
        }
        if(flag) printf("%d\n",sum/n+count/m);
        else printf("%d %d\n",v,pos);
    }
    return 0;
}


原文地址:https://www.cnblogs.com/xinyuyuanm/p/3019689.html