1 条题解

  • 0
    @ 2024-12-26 17:11:19

    C :

    #include <stdio.h>
    int main()
    {
    	int a1,a2,k1,k2,n,b,s,b1,s1,q,h;
    	scanf("%d %d %d %d %d",&a1,&a2,&k1,&k2,&n);
    	if(k1>=k2)
    	b=a1,s=a2,b1=k1,s1=k2;
    	else b=a2,s=a1,b1=k2,s1=k1;
    	if(n<s*s1)
    	h=n/s1;
    	else if(n>s*s1&&n<s*s1+b*b1)
    	h=(n-s*s1)/b1+s;
    	else h=s+b;
    	if(n<=b*b1+s*s1-b-s)
    	q=0;
    	else if(n>=b*b1+s*s1-b-s&&n<s*s1+b*b1)
    	q=n-(b*b1+s*s1-b-s);
    	else q=s+b;
    	printf("%d %d",q,h);
    	return 0;
    	
    	
    }
    

    C++ :

    #include <stdio.h>
    
    void swap(int &x, int &y)
    {
    	int t;
    	t = x;
    	x = y;
    	y = t;
    }
    
    int min(int x, int y)
    {
    	if(x > y) return y;
    	else return x;
    }
    
    int max(int x, int y)
    {
    	if(x > y) return x;
    	else return y;
    }
    
    int main()
    {
    	int x1, x2;
    	int y1, y2;
    	int n;
    	scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&n);
    	if(x2 > y2)
    	{
    		swap(x1, y1);
    		swap(x2, y2);
    	}
    	int minans = 0, maxans = 0;
    	int m = max(0, n - x1*(x2-1) - y1*(y2-1));
    	minans = min(x1 + y1, m);
    	for(int i = 1; i <= x1; i++)
    	{
    		if(n >= x2)
    		{
    			maxans++;
    			n -= x2;
    		}
    		else break;
    	}
    	for(int i = 1; i <= y1; i++)
    	{
    		if(n >= y2)
    		{
    			maxans++;
    			n -= y2;
    		}
    		else break;
    	}
    	printf("%d %d",minans,maxans);
    	return 0;
    }
    
    • 1

    信息

    ID
    710
    时间
    1000ms
    内存
    128MiB
    难度
    9
    标签
    提交数
    20
    已通过
    4
    上传者